2013-03-02 4 views
0

Я работаю над приложением, в котором я впервые отправляю на сервер пользователя Latitude and Longitude. Сервер также имеет некоторые ранее сохраненные координаты. Теперь приложение должно проверить, находится ли координата пользователя в радиусе 1 км или 2 км от сервера координат.Радиус широты и долготы

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

ответ

2
R = 6378.1; // radius of the Earth (km) 
    dlat = deg2rad($lat1-$lat2) // lattitude diference in radians 
    dlang = deg2rad ($lang1 - $lang2) //longitude diference in radian 

Радиус Земли значительно больше, чем 1-2 км, так что мы можем использовать Пифагор theorm, и мы сделали 0,03% точности ~ 0,3 м.

distance = R * sqrt($dlat^2 + $dlang^2 ); 
    // same: distance = sqrt(($dlat*R)^2 + ($dlang*R)^2) ) 

Это может помочь вам понять: http://en.wikipedia.org/wiki/Spherical_coordinate_system

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

Если вам нужно больше точ-: См http://en.wikipedia.org/wiki/Great-circle_distance на Работал пример секция

Когда расстояния всего в нескольких километрах, разница в точности мала, но время вычисления гораздо лучше, если использовать формулу, которую я написал ,

Смежные вопросы