Lorsque je clique sur la carte, quel sera le meilleur moyen de trouver le ou les marqueurs les plus proches? y a-t-il des fonctions dans l'API qui m'aideront à le faire?
c'est google map api v3.
google-maps
google-maps-api-3
user198003
la source
la source
Réponses:
Vous devez d'abord ajouter l'écouteur d'événements
Créez ensuite une fonction qui parcourt le tableau de marqueurs et utilise la formule haversine pour calculer la distance de chaque marqueur à partir du clic.
Cela garde la trace des marqueurs les plus proches et alerte son titre.
J'ai mes marqueurs sous forme de tableau sur mon objet cartographique
la source
Vous pouvez utiliser la méthode computeDistanceBetween () dans l' espace de noms google.maps.geometry.spherical .
la source
J'aimerais développer la suggestion de Leor pour quiconque ne sait pas comment calculer l'emplacement le plus proche et fournir une solution fonctionnelle:
J'utilise des marqueurs dans un
markers
tableau, par exemplevar markers = [];
.Alors prenons notre position comme quelque chose comme
var location = new google.maps.LatLng(51.99, -0.74);
Ensuite, nous réduisons simplement nos marqueurs par rapport à l'emplacement que nous avons comme ceci:
Ce qui ressort est votre
LatLng
objet marqueur le plus proche .la source
La formule ci-dessus n'a pas fonctionné pour moi, mais je l'ai utilisée sans aucun problème. Passez votre position actuelle à la fonction et parcourez un tableau de marqueurs pour trouver le plus proche:
la source
markers
tableau? Est-ce en créant un marqueur en utilisantvar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
puis pour chaque marqueurmap.markers.push(marker);
Connaissez-vous les extensions Mysql Spatial ?
Vous pouvez utiliser quelque chose comme MBRContains (g1, g2) .
la source
Voici une autre fonction qui fonctionne très bien pour moi, renvoie la distance en kilomètres:
la source
Utilisez la méthode API Google map computeDistanceBetween () pour calculer le marqueur proche entre votre position et la liste des marqueurs sur google map.
Pas:-
Créez un marqueur sur la carte 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 }); }
Sur la souris, cliquez sur créer un événement pour obtenir lat, long de votre emplacement et passez-le à find_closest_marker ().
visitez ce lien suivez les étapes. Vous pourrez vous rapprocher du marqueur de votre position.
la source