Verschieben von Marker in der Google Maps API v3, ohne so viel Prozessorleistung beansprucht?
Ich versuche zu bewegen, einen marker auf eine GoogleMap zu simulieren Echtzeit-Objekt-Bewegungen. Derzeit werden die JavaScript-pseudo-code, wie ich das Tue, ist:
var marker = new google.maps.Marker({
position: myLatlng,
map: map
});
var myMovementArray[] = new movementArray(startPoint, endPoint);
drawMovement(int pos){
marker.setPosition(myMovementArray[pos]["lat"], myMovementArray[pos]["lng"]);
pos++;
if (pos < myMovementArray.length()){
setTimeout('drawMovement('+pos+')', 33);
}
}
init(){
drawMovement(0);
}
Wo jedes element in der Bewegung array wird berechnet durch:
deltaLat = (endPos.lat - startPos.lat)/frames;
deltaLng = (endPos.lng - startPos.lng)/frames;
myMovementArray[i]["lat"] = startPos.lat + (deltaLat * i);
myMovementArray[i]["lng"] = startPos.lng + (deltaLng * i);
Referenz, der vollständige JavaScript-Datei, die ich verwende, ist bis auf:
http://spad.es/js/com.kamkash.locateme.viewer.dev.js
Das problem, das ich habe, ist, dass diese Methode zum verschieben der Marker auf Google maps zu sein scheint sehr Prozessor intensiv. Ich habe gesucht, um zu sehen, wenn die Google Maps API hat eine saubere Art und Weise zu animieren, marker-Bewegung von Punkt A zu Punkt B, kann aber nichts finden. Und die meisten anderen referenzierten Methode dafür, die ich gefunden habe, ist am Beispiel von http://www.geocodezip.com/v3_animate_marker_directions.html aber dann mit der gleichen Methode, die ich bereitgestellt haben.
Code verwendet wird, in der Praxis an:
www.spad.es/random
Hat jemand einen mehr-Prozessor-effiziente/Reiniger Weg, dies zu tun?
Dank
- Ich habe auch gesehen, dieser Eintrag: stackoverflow.com/questions/665193/..., aber es gibt keine Antwort auf die Frage, ob es eine mehr-Prozessor-freundliche Ansatz. Das Beispiel des Autos mit Richtungen verwendet eine GIcon-das scheint weniger intensiv, aber dann bin ich nicht sicher, ob ich das anbringen kann eine Genauigkeit radius (google.maps.Circle-Objekt), um es
- Google-Maps-API macht-Marker sehr viel effizienter, wenn Sie gesetzt sind, über KML-Datei. Nicht sicher, ob das verbessert die Leistung für das bewegen einer Markierung als gut, aber es scheint plausibel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann ein problem mit der canvas-Marker. Versuchen Sie, die
optimized: false
marker-option - dies bewirkt, dass der Marker auf nicht Rendern als Leinwand Marker.Optimieren Sie deltaLat und deltaLng viel mit einem raster-algorithmen wie die Bresenahm algorithmus: http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm. In x-Axt er verwendet immer 1-pixel-Schritten und in y-axe kommt es auf eine clevere Fehlerkorrektur.