In meinem Google Maps-Programm habe ich einfache KML-Parser, die nur Koordinaten abrufen und Polylinien auf der Karte für sie erstellen, zusätzlich in jedem Punkt Marker erstellen, die später zum Bearbeiten der Linie verwendet werden. Bei längeren Routen hängt die Karte vom Überhang der Marker ab. Ich habe die Idee, vielleicht können Sie nur Marker erstellen, wenn die Kurve 10 Grad überschreitet? Jetzt habe ich if
, die nur jeden zweiten Punkt abgeschirmt wird, aber das ist eine schwache Idee.Wie kann die Anzahl der Marker aus KML-Koordinaten optimiert werden?
Illustrative Auspacken eines Arrays:
for (var i=0;i<coords.length;i++) {
if(i!=0&&i!=coords.length-1){
var prevpt = new google.maps.LatLng(coords[i-1].lat, coords[i-1].lng);
var pivot = new google.maps.LatLng(coords[i].lat, coords[i].lng);
var nextpt = new google.maps.LatLng(coords[i+1].lat, coords[i+1].lng);
var marker = createMarker(pivot);
polyMarkers.push(marker);
var path = polyLine.getPath();
path.push(pivot);
}
}
wie zu berechnen, dass die nächsten 10 Grad übersteigt?
Vielleicht haben Sie eine andere Idee, wie es optimiert werden kann?
Danke, das ist erstaunlich Algorithmus, ist, was ich gesucht habe. Für mein Beispiel habe ich die Implementierung in Javascript gefunden [link] (http://mourner.github.com/simplify-js/) – roza