Quiero ser capaz de almacenar y volver a mostrar fácilmente una ruta de indicaciones de Google Maps en un mapa de Google. Digamos del punto A al B, el objeto DirectionsResult de Google tiene 100 puntos a lo largo de la ruta, quiero poder almacenar esta ruta y garantizar que la próxima vez que pinto las instrucciones pasarán por todos estos puntos.Almacenamiento de la ruta completa de Google Maps
La forma en que he visto que la gente trata de hacerlo es serializar todo el objeto DirectionsResult y almacenarlo en una base de datos. Luego, cuando deseemos volver a dibujar la ruta, envíe de nuevo la cadena, JSON.Párguela, y luego intente alimentarla a un objeto DirectionsRenderer que representará las instrucciones en el mapa. Este enfoque tiene tres problemas:
1) Se pierde información de tipo durante el proceso de serialización, y como Google minnifica los objetos, no puede usar las funciones de clase para obtener estos valores del objeto de manera confiable. Primero debe usar las funciones o los accesos a los datos para crear objetos 'portadocumentos' al serializar inicialmente el objeto, luego reconstruir los objetos de Google Maps cuando más tarde analice la cadena serializada.
2) Es legalmente dudoso. El TOS de Google Maps dice que no debes almacenar datos permanentemente y parece que de otras publicaciones este enfoque lo infringe.
3) El objeto puede ser enorme, una ruta que serialicé tenía más de 64 KB.
También pensé en tratar de almacenar algunos puntos del camino y luego reconstruirlo usando Waypoints. Este tipo de trabajo funciona pero solo puedes tener como máximo 8 puntos para la API gratuita, por lo que esto no garantiza mucha precisión más allá de esos 8 puntos. Además, pinta los marcadores del waypoint a lo largo de la ruta, lo que creo que podría confundir al usuario.
¿Existe alguna forma aceptada de almacenar rutas exactas desde Google Maps, o la API y los TOS están diseñados a propósito para evitar esto? Gracias por la ayuda.
Así es como lo resolvimos: Tomé el campo "encoded_polyline" y lo envié a nuestro back-end. Si necesitaba procesar los puntos en el backend, utilicé una versión del algoritmo de decodificación de la polilínea de Google que encontré en línea y la migración a ruby (o el idioma que esté usando). Aquí hay una [versión de Python] (http://code.google.com/p/py-gpolyencode/) que encontré. Si necesita mostrar la polilínea en la parte delantera, envíe la polilínea hasta la parte frontal y use la [Herramienta de Google Geometry] (https://developers.google.com/maps/documentation/javascript/3.exp/referencia # codificación) para decodificarlo. – jargetz
Por supuesto, la desventaja de esto es que solo muestra la ruta como una polilínea, por lo que si desea tener waypoints, también deberá almacenarlos. Y si desea que la ruta sea editable, entonces no tiene suerte, solo tendrá que solicitar un nuevo conjunto de instrucciones. – jargetz
Si tiene marcadores con waypoints, puede almacenar 'waypoints list' (o' markers list' con 'start' -'end' point) en la' base de datos' y luego retive whenver require con la misma secuencia y pase a la directionrender con inicio y punto final. Volverá a dibujar la ruta en el mapa. – bharat