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 formule Haversine
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 };La formule Haversine La formule Haversine peut être implémentée en JavaScript comme suit :
var rad = function(x) { retourner x * Math.PI/180 ; } ; var getDistance = fonction (p1, p2) { variable R = 6378137 ; // Rayon moyen de la Terre en mètre 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)); vard = R * c; retourner d ; // renvoie la distance en mètre };
Exemple d'utilisation
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 };Pour utiliser la formule ci-dessus pour calculer la distance entre deux marqueurs sur une carte Google, transmettez simplement les coordonnées des marqueurs comme arguments au fonction getDistance. Par exemple :var Marker1 = new google.maps.Marker({ position : nouveau google.maps.LatLng(51.508742, -0.120850), carte : carte }); var marqueur2 = nouveau google.maps.Marker({ position : nouveau google.maps.LatLng(40.712784, -74.005941), carte : carte }); var distance = getDistance(marker1.getPosition(), Marker2.getPosition());
La variable distance contiendra désormais la distance entre les deux marqueurs en mètres.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3