Google Maps 3 Redessiner Polyligne vacillant
-
26-10-2019 - |
Question
Je dessine une polyligne avec un assez grand nombre de points de latitude / lng (~ 1000). J'ai deux curseurs (début et fin) qui permettent à l'utilisateur d'ajuster les limites de temps qui met alors à jour le Polyline pour afficher les données entre ces deux fois.
Mon algorithme de mise à jour va quelque chose comme ceci:
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);
Maintenant, la chose étrange est, quand je fais glisser l'extrémité curseur la ligne redessine comme prévu, mais quand je fais glisser le curseur de départ, il redessine la ligne excepter correctement à des niveaux de zoom parties de la ligne semblent se déplacer légèrement (il doesn « t faire quand zoomée à proximité). Je pensais que ce serait peut-être quelque chose à voir avec l'algorithme anti-alias Google applique à la polyligne, mais il ne le fait pas quand je déplace le curseur fin.
Quelqu'un sait ce qui est à l'origine de cette vacillante?
La solution
J'ai piraté une solution qui semble fonctionner pour l'instant. J'ai essayé de maintenir le nombre de points cohérents que l'API ne me semble pas que l'ajout de points à l'avant.
Disons que j'ai un ensemble de 1000 points et je veux seulement montrer de 200 - 900. Si je dessine l'emplacement du point 200, 200 fois, puis tirer le reste des données à 900 points, il arrête le vacillement. Pour afficher 10 -. 330 J'attire point 10, 10 fois, puis tirer le reste des données à un point 330
Je suppose que cela a quelque chose à la façon dont Google stocke en interne les lignes de la carte, si vous ajoutez à l'avant de la ligne, il peut avoir à ré-indexer un tableau entier et redessiner la ligne à partir de zéro.
Je ne vais pas accepter la réponse pour quelqu'un maintenant Incase vient avec une meilleure réponse.