Kiedy kliknę na mapę, jaki będzie najlepszy sposób na znalezienie najbliższego znacznika lub znaczników? czy w interfejsie API są jakieś funkcje, które pomogą mi to zrobić?
to google map api v3.
google-maps
google-maps-api-3
user198003
źródło
źródło
Odpowiedzi:
Najpierw musisz dodać Eventlistener
Następnie utwórz funkcję, która zapętla tablicę znaczników i używa wzoru haversine do obliczenia odległości każdego znacznika od kliknięcia.
To śledzi najbliższe znaczniki i ostrzega o jego tytule.
Mam swoje znaczniki jako tablicę na moim obiekcie mapy
źródło
Można użyć metody computeDistanceBetween () w przestrzeni nazw google.maps.geometry.spherical .
źródło
Chciałbym rozwinąć Leor za sugestią dla nikogo mylić, w jaki sposób obliczyć najbliższą lokalizacją i rzeczywiście świadczą roztwór roboczy:
Używam znaczników w
markers
tablicy npvar markers = [];
.Więc przyjmijmy naszą pozycję jako coś podobnego
var location = new google.maps.LatLng(51.99, -0.74);
Następnie po prostu zmniejszamy nasze znaczniki względem lokalizacji, którą mamy w następujący sposób:
To, co wyskakuje, to najbliższy
LatLng
obiekt znacznika .źródło
Powyższa formuła nie działa dla mnie, ale użyłem tego bez problemu. Przekaż swoje bieżące położenie do funkcji i przejrzyj tablicę znaczników, aby znaleźć najbliższe:
źródło
markers
tablicę? Czy to poprzez tworzenie markera za pomocąvar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
potem dla każdego znacznikamap.markers.push(marker);
Czy znasz rozszerzenia MySQL Spatial ?
Możesz użyć czegoś takiego jak MBRContains (g1, g2) .
źródło
Oto kolejna funkcja, która działa dla mnie świetnie, zwraca odległość w kilometrach:
źródło
Użyj metody computeDistanceBetween () Google map API , aby obliczyć bliskość znacznika między Twoją lokalizacją a listą znaczników na mapie Google.
Kroki:-
Utwórz znacznik na mapie Google.
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 }); }
Po kliknięciu myszką utwórz zdarzenie, aby uzyskać szerokość, długość Twojej lokalizacji i przekaż to do find_closest_marker ().
odwiedź ten link i postępuj zgodnie z instrukcjami. Będziesz mógł zbliżyć się do znacznika swojej lokalizacji.
źródło