Que necesitas para correr la aplicacion?
- Ejecutar o comando
git clone https://github.com/jmar1998/yii2-google-maps.git
- Definir las credenciales para google maps en el archivo config/params.php
- Es necesario tener docker instalado Para instrucciones de instalación se puede consultar el link siguiente : Docker installation
Como iniciar la aplicacion?
Luego de tener nuestro docker instalado y ejecutandose, puedes iniciar la aplicacion ejecutando en la CLI el siguiente comando:
docker compose up -d
***Como acceder a la aplicacion
Puedes acceder directamente con en link : Abrir la app
Adicional
Para visualizar el esquema de la base de datos y algunas informaciones sobre el diseño, puede ver el archivo database.png
Como es el proceso de inicialización de la aplicación ?
Basicamente son ejecutados los siguientes procesos
- Composer install : Para instalar dependencias
- Se corrigen permisos de directorios criticos para Yii2
- Son ejecutadas migrations : Para crear la base de datos necesaria
Archivos clave en la aplicación
- ./web/libraries/google-maps/google-maps.js
En esta libreria son preparados todos los datos, asi como tambien la renderización y normalización de los datos a partir de la API de google maps
- ./forms/RouteForm.php
En este archivo son transformados los datos que proceden a partir de la libreria ./web/libraries/google-maps/google-maps.js, para algo manejable en los modelos/base de datos, a su vez son ejecutados procesos para simplificar el proceso de creación y actualización de las rutas
Cambios Relevantes V2
- Hubo una reformulación en el codigo para añadir la posibilidad de agregar mas de 26 paradas
- La API Google maps no permite crear rutas con mas de 24 paradas (24 + 2 [origen y destino])
- Para sobrepasar este problema se crean "chunks" de 26 paradas y hacemos 1 pedido por cada chunk, posteriormente se junta en el mapa siendo que el ultimo punto de cada "chunk" es el origen de cada bloque posterior
- Simplificacion de la manera de renderizar los marcadores
- Corregido el delete de los marcadores
- Para disminuir la cantidad de pedidos se guarda en la base de datos el pedido original
- La información es posteriormente comprimida para disminuir el uso de memoria durante el guardado y espacio en la db
- En nuestro caso es un array de pedidos para permitir varias rutas de +26 paradas
Cambios Relevantes V3
- Fueron agregadas 2 funciones
- getDistanceHaversine : Esta función es usada para calcular los puntos mas relevantes para posteriormente comparar esos puntos con la api de google maps, esto para tambien reducir la cantidad de pedidos
- compareLocations : Funcion principal de comparacion
- Fue optimizado la compresion y descompresion de las rutas, ya no es necesario cargar toda la informacion en el modelo y la velocidad de carga fue incrementada en gran medida
- Nueva sección para compara rutas con puntos
Nota : es necesario ejecutar migrations Como actualizar la base de datos Ejecutando este comando puedes actualizar la estructura de la base de datos
echo "y" | docker compose exec php ./yii migrate/up
- Tambien puedes ejecutar
docker compose down && docker compose up
;