2010-10-02 148 views
1

在我的应用程序中,当用户拨打或接听电话时,我正在收集经度和纬度,我正在用NTSC时间延迟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:起点]

但仍然没有得到其他结果,在一个论坛上,我读到在两个纬度和经度上会有1mile的下降。 那么有没有解决方案?

回答

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]; 
相关问题