Cuando hago clic en el mapa, ¿cuál será la mejor manera de encontrar el marcador o marcadores más cercanos? ¿hay algunas funciones en api que me ayudarán a hacer eso?
es google map api v3.
google-maps
google-maps-api-3
user198003
fuente
fuente
Respuestas:
Primero tienes que agregar el eventlistener
Luego, cree una función que recorra la matriz de marcadores y utilice la fórmula haversine para calcular la distancia de cada marcador desde el clic.
Esto realiza un seguimiento de los marcadores más cercanos y alerta su título.
Tengo mis marcadores como una matriz en mi objeto de mapa
fuente
Puede utilizar el método computeDistanceBetween () en el espacio de nombres google.maps.geometry.spherical .
fuente
Me gustaría ampliar la sugerencia de Leor para cualquiera que esté confundido sobre cómo calcular la ubicación más cercana y realmente proporcionar una solución funcional:
Estoy usando marcadores en una
markers
matriz, por ejemplovar markers = [];
.Entonces tengamos nuestra posición como algo como
var location = new google.maps.LatLng(51.99, -0.74);
Entonces simplemente reducimos nuestros marcadores contra la ubicación que tenemos así:
Lo que aparece es el
LatLng
objeto marcador más cercano .fuente
La fórmula anterior no funcionó para mí, pero la usé sin ningún problema. Pase su ubicación actual a la función y recorra una serie de marcadores para encontrar el más cercano:
fuente
markers
matriz? ¿Es creando un marcador usandovar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
luego para cada marcadormap.markers.push(marker);
¿Conoce las extensiones espaciales de Mysql ?
Podría usar algo como MBRContains (g1, g2) .
fuente
Aquí hay otra función que funciona muy bien para mí, devuelve la distancia en kilómetros:
fuente
Utilice el método de API de mapas de Google computeDistanceBetween () para calcular el marcador cercano entre su ubicación y la lista de marcadores en el mapa de Google.
Pasos:-
Crear marcador en el mapa de 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 }); }
En el mouse, haga clic en crear evento para obtener lat, long de su ubicación y páselo a find_closest_marker ().
visite este enlace siga los pasos. Podrá acercarse al marcador de su ubicación.
fuente