Skip to content

jmar1998/yii2-google-maps

Repository files navigation

Aplicacion de prueba YII2 google maps


Que necesitas para correr la aplicacion?

  1. Ejecutar o comando

git clone https://github.com/jmar1998/yii2-google-maps.git

  1. Definir las credenciales para google maps en el archivo config/params.php
  2. 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

Database schema

Como es el proceso de inicialización de la aplicación ?

Basicamente son ejecutados los siguientes procesos

  1. Composer install : Para instalar dependencias
  2. Se corrigen permisos de directorios criticos para Yii2
  3. Son ejecutadas migrations : Para crear la base de datos necesaria

Archivos clave en la aplicación

  1. ./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

  1. ./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

  1. 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
  1. Simplificacion de la manera de renderizar los marcadores
  2. Corregido el delete de los marcadores
  3. 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

  1. 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
  1. 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
  2. Nueva sección para compara rutas con puntos
  • Explore

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;

About

Repositorio de prueba en YII2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages