Google Maps - Как узнать расстояние между двумя точками в метрах? - PullRequest
40 голосов
/ 03 ноября 2011

У меня есть эти координаты:

(45.463688, 9.18814) 
(46.0438317, 9.75936230000002)

, и мне нужно (думаю, с поддержкой Google API V3), чтобы получить расстояние между этими двумя точками в метре.Как мне это сделать?

Ответы [ 6 ]

114 голосов
/ 03 ноября 2011

Если вы хотите использовать API карт Google v3, вот функция для использования: Примечание: вы должны добавить &libraries=geometry к вашему источнику скрипта

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>

<script>
var p1 = new google.maps.LatLng(45.463688, 9.18814);
var p2 = new google.maps.LatLng(46.0438317, 9.75936230000002);

alert(calcDistance(p1, p2));

//calculates distance between two points in km's
function calcDistance(p1, p2) {
  return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}

</script>
4 голосов
/ 03 ноября 2011

Я думаю, что вы могли бы обойтись без какого-либо конкретного API и рассчитать расстояние с помощью простого Javascript:

Этот сайт имеет хорошую информацию о географических вычислениях и образец Javascript для расчета расстояния.

Хорошо, быстрый взгляд на страницу API Google, и кажется, что вы можете сделать это:

  1. Вызовите DirectionsService (). Route (), чтобы получить DirectionsResult с маршрутами
  2. Для одного или каждого маршрута пройдите через его свойство leg и вычислите сумму расстояний
1 голос
/ 03 ноября 2011

Попробуйте это

 CLLocationCoordinate2D coord1;
 coord1.latitude = 45.463688;
 coord1.longitude = 9.18814;
 CLLocation *loc1  = [[[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude] autorelease];

 CLLocationCoordinate2D coord2;
 coord2.latitude = 46.0438317;
 coord2.longitude = 9.75936230000002;
 CLLocation *loc2  = [[[CLLocation alloc] initWithLatitude:46.0438317 longitude:9.75936230000002] autorelease];

 CLLocationDistance d1 = [loc1 distanceFromLocation:loc2];
1 голос
/ 03 ноября 2011

Это в основном делается с помощью математики вне google API, поэтому вам не нужно использовать API для чего-либо, кроме поиска правильных координат.

Зная это, вот ссылка на ранее отвеченный вопрос, касающийся Javascript.

Рассчитать расстояние между двумя GPS-координатами

1 голос
/ 03 ноября 2011

http://www.csgnetwork.com/gpsdistcalc.html

Не имеет ничего общего с кодировкой кстати

РЕДАКТИРОВАТЬ, если вы ищете какой-то код

Рассчитать расстояние между двумя точками в Googleкарты V3

0 голосов
/ 13 сентября 2017

Попробуйте это:

const const toRadians = (val) => {
    return val * Math.PI / 180;
}
const toDegrees = (val) => {
    return val * 180 / Math.PI;
}
// Calculate a point winthin a circle
// circle ={center:LatLong, radius: number} // in metres
const pointInsideCircle = (point, circle) => {
    let center = circle.center;
    let distance = distanceBetween(point, center);

    //alert(distance);
    return distance < circle.radius;
};

const distanceBetween = (point1, point2) => {
   //debugger;
   var R = 6371e3; // metres
   var φ1 = toRadians(point1.latitude);
   var φ2 = toRadians(point2.latitude);
   var Δφ = toRadians(point2.latitude - point1.latitude);
   var Δλ = toRadians(point2.longitude - point1.longitude);

   var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
           Math.cos(φ1) * Math.cos(φ2) *
           Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
   var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

   return R * c;
}

Ссылки: http://www.movable -type.co.uk / scripts / latlong.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...