Pregunta

Estoy dibujando una polilínea con una cantidad bastante grande de puntos LAT/GNL (~ 1000). Tengo dos controles deslizantes (inicio y finalización) que permiten al usuario ajustar los límites de tiempo que luego actualiza la polilínea para mostrar los datos entre esas dos veces.

Mi algoritmo de actualización es algo como esto:

var mvcPath = new google.maps.MVCArray();

for (var i = 0; i < gpsData.length; i++) {

    if (gpsData[i]['timestamp'] <= endDate && 
        gpsData[i]['timestamp'] >= startDate) {
        mvcPath.push(gpsData[i]['location']);
    }
}

this.path.setPath(mvcPath);

Ahora lo extraño es que, cuando arrasto el control deslizante final, la línea se vuelve a dibujar como se esperaba, sin embargo, cuando arrastro el control deslizante de inicio, vuelve a dibujar la línea correctamente, excepto a altos niveles de zoom, partes de la línea parecen moverse ligeramente (no lo hace Esto cuando se acerca a Close). Pensé que podría ser algo que ver con el algoritmo anti alias que Google aplica a la polilínea, pero no lo hace cuando muevo el control deslizante final.

¿Alguien sabe lo que está causando este parpadeo?

¿Fue útil?

Solución

He pirateado una solución que parece funcionar por ahora. Traté de mantener la cantidad de puntos consistente ya que la API no parecía que me gustaba agregando puntos al frente.

Digamos que tengo un conjunto de 1000 puntos y solo quiero mostrar de 200 a 900. Si dibujo la ubicación del punto 200, 200 veces, entonces dibujo el resto de los datos al punto 900, detiene el parpadeo. Para mostrar de 10 a 330, dibujaría el punto 10, 10 veces y luego dibujaría el resto de los datos al punto 330.

Supongo que esto tiene algo que Google almacena internamente las líneas del mapa, si agrega al frente de la línea, puede tener que volver a indexar una matriz completa y volver a dibujar la línea desde cero.

No aceptaré la respuesta por ahora en caso de que alguien reciba una mejor respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top