2010-10-02 2 views
1

в моей заявке Я собираю широту и долготу, когда пользователь набирает вызов или принимает вызов в это время. Я вызываю одну функцию с NSTimer с задержкой в ​​15 секунд, и снова я собираю широту и долготы.Расчет расстояния между местоположением с использованием широты и долготы

проблема заключается в том, что в то время как я вычисления расстояния между ними дают минимальное расстояние 0,87 мили или 1 мили, даже если я не движущихся я использовал следующие формулы

double distance = (sin(gpslatitudeOld/57.2958) * sin(gpslatitudeNew/57.2958)) + (cos(gpslatitudeOld/57.2958) * cos(gpslatitudeNew/57.2958) * cos(gpslongitudeNew/57.2958 - gpslongitudeOld/57.2958)); 

с сайта (HTTP: // www.meridianworlddata.com/Distance-Calculation.asp)

я также использовал

[newLocation getDistanceFrom: начальная точка]

, но все еще не получаю другого результата, в одном из форумов я читал, что в двух широтах и ​​долготе будет 1 миллион. так что есть решение для этого ???

ответ

1

Пробуйте авиационный формулярный сайт. http://williams.best.vwh.net/avform.htm

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

0

Земля не является идеальной сферой, поэтому простая тригонометрия приведет к большим ошибкам. Я считаю, что проблема в том, что она на самом деле довольно плоская на полюсах, и любопытное выпуклое посередине (многие из нас сталкиваются с этой проблемой по мере старения ...)

Типичная модель, которую я видел раньше это составляет WSG-84. Возможно, у вашей платформы уже есть библиотека, чтобы справиться с этим.

3
CLLocation *location1 = [[CLLocation alloc] initWithLatitude:lat1 longitude:long1]; 
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:lat2 longitude:long2]; 
NSLog(@"Distance i meters: %f", [location1 distanceFromLocation:location2]); 
[location1 release]; 
[location2 release]; 
Смежные вопросы