"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo calcular la distancia entre dos marcadores en Google Maps V3?

¿Cómo calcular la distancia entre dos marcadores en Google Maps V3?

Publicado el 2024-12-22
Navegar:568

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

Cómo calcular la distancia entre marcadores en Google Maps V3

Calcular la distancia entre dos puntos en un mapa es una tarea común, y Google Maps V3 proporciona una API completa para hacerlo. Uno de los métodos más sencillos es utilizar la fórmula de Haversine, que calcula la distancia entre dos coordenadas geográficas teniendo en cuenta la curvatura de la Tierra.

La fórmula de Haversine

La La fórmula de Haversine se puede implementar en JavaScript de la siguiente manera:

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
};

Ejemplo de uso

Para usar la fórmula anterior para calcular la distancia entre dos marcadores en un mapa de Google, simplemente pase las coordenadas de los marcadores como argumentos al Función getDistance. Por ejemplo:

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 distancia ahora contendrá la distancia entre los dos marcadores en metros.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3