Quando eu clico no mapa, qual é a melhor maneira de encontrar o marcador ou marcadores mais próximos? existe alguma função na api que vai me ajudar a fazer isso?
é google map api v3.
google-maps
google-maps-api-3
user198003
fonte
fonte
Respostas:
Primeiro você tem que adicionar o ouvinte de eventos
Em seguida, crie uma função que percorra a matriz de marcadores e use a fórmula Haversine para calcular a distância de cada marcador a partir do clique.
Isso rastreia os marcadores mais próximos e alerta seu título.
Eu tenho meus marcadores como uma matriz no meu objeto de mapa
fonte
Você pode usar o método computeDistanceBetween () no namespace google.maps.geometry.spherical .
fonte
Eu gostaria de expandir a sugestão de Leor para qualquer pessoa confusa sobre como calcular o local mais próximo e realmente fornecer uma solução funcional:
Estou usando marcadores em uma
markers
matriz, por exemplovar markers = [];
.Então vamos ter nossa posição como algo como
var location = new google.maps.LatLng(51.99, -0.74);
Então, simplesmente reduzimos nossos marcadores em relação ao local que temos, assim:
O que sobressai é o seu
LatLng
objeto marcador mais próximo .fonte
A fórmula acima não funcionou para mim, mas usei-a sem problemas. Passe sua localização atual para a função e faça um loop por uma série de marcadores para encontrar o mais próximo:
fonte
markers
matriz? É criando um marcador usandovar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
então, para cada marcadormap.markers.push(marker);
Você conhece as extensões do Mysql Spatial ?
Você pode usar algo como MBRContains (g1, g2) .
fonte
Aqui está outra função que funciona muito bem para mim, retorna a distância em quilômetros:
fonte
Use o método computeDistanceBetween () API do Google map para calcular próximo ao marcador entre a sua localização e a lista de marcadores no google map.
Passos:-
Crie um marcador no mapa do 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 }); }
Com o mouse, clique em criar evento para obter lat, long de sua localização e passe para find_closest_marker ().
visite este link siga os passos. Você será capaz de chegar mais perto do marcador de sua localização.
fonte