#google #google_maps #геолокация
Фактически стоит такая задача: имеются координаты (latitude и longitude) нескольких точек из Google Maps. Нужно вычислить расстояния между этими точками в метрах. Насколько я понимаю нужно преобразовать координаты в метрические - как это сделать? Меня интересует не софт, а алгоритм и формулы, чтобы я мог внедрить их с собственную программу.
Ответы
Ответ 1
Подключаем: И считаем (latLngA, latLngB - объекты типа "LatLng"): google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB); Ежели использование готоых велосипедов - не для Вас и Вы решили пойти по пути истинного самурая, то есть еще один способ. Расстояние по ортодромии можно рассчитать с использованием формулы синус-верзус: rad = function(x) {return x*Math.PI/180;} distHaversine = function(p1, p2) { var R = 6371; // earth's mean radius in km 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.toFixed(3); }
Комментариев нет:
Отправить комментарий