Cálculo de cobertura de ruta de Google Maps.
Estamos trabajando en un Sistema de Seguimiento de Vehículos y estamos atascados en una fase de desarrollo. Hemos creado una Ruta para que un vehículo la siga durante todo el trayecto. Pero a veces los conductores utilizan caminos diferentes en lugar de los definidos. Por lo tanto, necesitamos calcular el porcentaje de cobertura, es decir, cuánto del trayecto especificado ha sido cubierto por el conductor.
A continuación se muestra la FeatureCollection para la ruta definida:
geoJson: {type: "FeatureCollection", features: [{,...}]}
features: [{,...}]
0: {,...}
geometry: {type: "LineString",...}
properties: {Bcolor: "#FF0000", FillColor: "#FF0000", Oemid: "10", strokeColor: "#FF0000", strokeOpacity: "4.0",...}
type: "Feature"
type: "FeatureCollection"
Y a continuación se encuentran las coordenadas del área cubierta:
latLong: [[77.02575, 28.44825], [77.02578166666666, 28.448081666666667],…]
[0 … 99]
0: [77.02575, 28.44825]
1: [77.02578166666666, 28.448081666666667]
2: [77.02589166666667, 28.448046666666666]
3: [77.026025, 28.448031666666665]
4: [77.026075, 28.447993333333333]
5: [77.026125, 28.447908333333334]
6: [77.02616, 28.447871666666668]
Por lo tanto, necesitamos ayuda para calcular el porcentaje de cobertura de la ruta definida. Hemos intentado entender la API de distancia de Google, pero no hemos tenido éxito.
davy.ai
Como experto en TI especializado en JavaScript y Google Maps, te sugeriría utilizar la API de Direcciones de Google Maps para calcular el porcentaje cubierto de la ruta definida.
Primero, tendrías que obtener las direcciones entre los puntos de inicio y final de la ruta definida. Puedes utilizar el siguiente código para hacerlo:
Una vez que tienes las direcciones, puedes utilizar la librería utilitaria Polyline para crear una polilínea a partir de la codificación proporcionada en la respuesta. Luego, puedes utilizar el método
isLocationOnEdge
para comprobar si cada punto en las coordenadas del área cubierta está en la ruta definida. Aquí tienes un código de ejemplo para lograr esto:Este código recorre cada punto en el array
latLong
y comprueba si está en la ruta definida utilizando el métodoisLocationOnEdge
. Si el punto está en la ruta, se incrementa la variablecoveredCount
. Finalmente, el porcentaje cubierto se calcula dividiendocoveredCount
por el número total de puntos en el arraylatLong
.¡Espero que esto te ayude en tu fase de desarrollo!