0

Есть ли математическая ошибка, чтобы рассчитать, сколько километров между двумя координатами, без использования карты google.Сколько километров между 2 координатами

Так и т.д.

FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325

Как добраться км Разногласия между этим 2 координатами?

Является ли простая формула для этого или сложного?

+3

Это может вам помочь: http://www.movable-type.co.uk/scripts/latlong.html –

+0

Вы помните формулу склона из алгебры? хорошие времена. используйте это, чтобы найти расстояние в графе, а затем преобразовать deg в км. – dandavis

+1

Это хороший и верный вопрос, но он плохо спросил и ответил еще хуже. – Archer

ответ

1

Вы хотите, что называется «great-circle distance» между двумя точками. Это в основном кратчайший путь между двумя точками на поверхности сферы. (Земля не довольно сфера, но это достаточно близко.)

В любом случае, нужно найти угол между двумя линиями от центра сферы до каждой точки. Умножьте это на радиус сферы, и это ваше расстояние.

Одна из основных формул основана на «сферическом законе косинусов».

angle = acos((sin(lat1)*sin(lat2)) + cos(lat1)*cos(lat2)*cos(abs(lat2-lat1)))

(Спасибо, Википедия! :))

φ и φ представляют широты двух точек, и Δλ разница между долготы. Δσ - угол между двумя точками; предполагая, что он находится в радианах, вы можете умножить его на радиус сферы, и это дает вам длину дуги, которая их соединяет.

В JavaScript:

function arc_distance(loc1, loc2) { 
    var rad = Math.PI/180, 
     earth_radius = 6371.009, // close enough 
     lat1 = loc1.lat * rad, 
     lat2 = loc2.lat * rad, 
     dlon = Math.abs(loc1.lon - loc2.lon) * rad, 
     M = Math; 

    return earth_radius * M.acos(
     (M.sin(lat1) * M.sin(lat2)) + (M.cos(lat1) * M.cos(lat2) * M.cos(dlon)) 
    ); 
} 

Когда эта формула была впервые использована на компьютерах, это действительно сосала с короткими расстояниями. Но тогда цифры тоже были немного меньше. С числами в JS, которые являются 64-битными, точность намного лучше, чем некоторые люди предупреждают о. Он может легко справляться с расстояниями менее километра, и даже на расстоянии менее метра он достаточно близок к другим методам.

+0

, так что это будет так: http://jsfiddle.net/sYq9S/2/ –

+0

@MarkWest: В значительной степени. Хотя ваши координаты будут похожи на 'var coords1 = {lat: 33.4444, lon: 34.5454545};'. – cHao

+0

да, но ничего не возвращайте :) http://jsfiddle.net/sYq9S/5/ –

0

Я думаю, вам нужно путешествовать. правильно? Формула из следующей ссылки дает только прямолинейное расстояние от одной точки к другой.

http://www.movable-type.co.uk/scripts/latlong.html

, если вам нужно точно distence пути из одной точки в другую точку использования Google матрицы расстояний. вы можете найти его на https://developers.google.com/maps/documentation/distancematrix/

ответьте этот ответ тоже. working out distances between two points using google maps api?

+0

http://jsfiddle.net/sYq9S/ –

+0

@MarkWest снова, это не сайт «напишите мой код для меня». – iConnor

+0

ok, iwill удалите этот вопрос –