Maison >interface Web >js tutoriel >Comment calculer la distance entre deux marqueurs dans Google Maps V3 ?

Comment calculer la distance entre deux marqueurs dans Google Maps V3 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 14:54:12853parcourir

How to Calculate the Distance Between Two Markers in Google Maps V3?

Comment calculer la distance entre les marqueurs dans Google Maps V3

Calculer la distance entre deux points sur une carte est une tâche courante, et Google Maps V3 fournit une API complète pour ce faire. L'une des méthodes les plus simples consiste à utiliser la formule Haversine, qui calcule la distance entre deux coordonnées géographiques en tenant compte de la courbure de la Terre.

La formule Haversine

La La formule Haversine peut être implémentée en JavaScript comme suit :

var rad = function(x) {
  return x * Math.PI / 180;
};

var getDistance = function(p1, p2) {
  var R = 6378137; // Earth's mean radius in meter
  var dLat = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) *
    Math.sin(dLong / 2) * Math.sin(dLong / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d; // returns the distance in meter
};

Exemple Utilisation

Pour utiliser la formule ci-dessus pour calculer la distance entre deux marqueurs sur une Google Map, transmettez simplement les coordonnées des marqueurs comme arguments à la fonction getDistance. Par exemple :

var marker1 = new google.maps.Marker({
  position: new google.maps.LatLng(51.508742, -0.120850),
  map: map
});

var marker2 = new google.maps.Marker({
  position: new google.maps.LatLng(40.712784, -74.005941),
  map: map
});

var distance = getDistance(marker1.getPosition(), marker2.getPosition());

La variable distance contiendra désormais la distance entre les deux marqueurs en mètres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn