Wenn ich auf die Karte klicke, welcher Weg ist der beste, um den nächsten Marker oder die nächsten Marker zu finden? Gibt es einige Funktionen in API, die mir dabei helfen?
Es ist Google Map API v3.
google-maps
google-maps-api-3
user198003
quelle
quelle
Antworten:
Zuerst müssen Sie den Ereignislistener hinzufügen
Erstellen Sie dann eine Funktion, die das Array von Markern durchläuft und mithilfe der Haversine-Formel den Abstand jedes Markers vom Klick berechnet.
Dadurch werden die nächstgelegenen Markierungen verfolgt und der Titel angezeigt.
Ich habe meine Markierungen als Array auf meinem Kartenobjekt
quelle
Sie können die Methode computeDistanceBetween () im Namespace google.maps.geometry.spherical verwenden .
quelle
Ich möchte Leors Vorschlag für alle erweitern, die sich nicht sicher sind, wie sie den nächstgelegenen Standort berechnen und tatsächlich eine funktionierende Lösung anbieten sollen:
Ich verwende Marker in einem
markers
Array, zvar markers = [];
.Dann lassen Sie uns unsere Position als so etwas haben
var location = new google.maps.LatLng(51.99, -0.74);
Dann reduzieren wir einfach unsere Markierungen gegen den Ort, den wir so mögen:
Was herausspringt, ist Ihr nächstgelegenes Markierungsobjekt
LatLng
.quelle
Die obige Formel hat bei mir nicht funktioniert, aber ich habe sie ohne Probleme verwendet. Übergeben Sie Ihren aktuellen Standort an die Funktion und durchlaufen Sie eine Reihe von Markierungen, um die nächstgelegene zu finden:
quelle
markers
Array? Ist es durch Erstellen eines Markers mitvar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
dann für jeden Markermap.markers.push(marker);
Kennen Sie MySQL Spatial-Erweiterungen? ?
Sie könnten so etwas wie MBRContains (g1, g2) verwenden .
quelle
Hier ist eine weitere Funktion, die für mich hervorragend funktioniert und die Entfernung in Kilometern zurückgibt:
quelle
Verwenden Sie die Google Map-API computeDistanceBetween () Methode zwischen Ihrem Standort und der Markierungsliste auf zu berechnen.
Schritte:-
Erstellen Sie eine Markierung auf Google Map.
function addMarker(location) { var marker = new google.maps.Marker({ title: 'User added marker', icon: { path: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW, scale: 5 }, position: location, map: map }); }
Klicken Sie bei der Maus auf Ereignis erstellen, um lat, long von Ihrem Standort abzurufen, und übergeben Sie dieses an find_closest_marker ().
Besuchen Sie diesen Link und folgen Sie den Schritten. Sie können näher an Ihren Standort gelangen.
quelle