3
A
回答
3
如果你想从两个坐标,你可以使用这个片段获得距离:
#include <math.h>
#define DEG2RAD(degrees) (degrees * 0.01745327)
#define RADIUS_OF_EARTH 6378.1
+ (float) getDistanceFromStartCoords:(CLLocationCoordinate2D)start andEndCoords:(CLLocationCoordinate2D)end
{
float dist = acos((cos(DEG2RAD(start.latitude))*
cos(DEG2RAD(end.latitude))*
cos((-1*DEG2RAD(end.longitude))-
(-1*DEG2RAD(start.longitude)))) +
(sin(DEG2RAD(start.latitude))*
sin(DEG2RAD(end.latitude)))) *
RADIUS_OF_EARTH;
return dist;
}
+0
世界不是球形的。你相对于大地水准面的位置估算误差高达21km。 – 2011-02-03 13:55:40
3
iPhone上没有距离测量功能,可以给你2米的分辨率。您可以使用核心位置的-[CLLocation distanceFromLocation: otherLocation]
方法来获得在两个位置之间米的位移,但记住:
- 无处,我已经看到它的苹果解释是做什么用的Geode他们的坐标,而事实上无论是在用于不同位置计算的相同geode
- 他们使用的模型没有考虑到高度,这对于计算字段大小区域中人尺寸物体之间的距离非常蹩脚。尽管估算伦敦和莫斯科之间的距离没有问题,但错误很小。
- 当你的设备没有插好,使用真正的高精度的位置数据与运动检测相结合将会完全吸电池
- 没有使用动态检测,你只能告诉其中的装置是对within tens of metres。
2
这是一个“改良效果”上述解决方案。它增加了高度信息。看起来苹果返回的高度以米为单位。不适合飞行或轨道或类似的情况,但如果有人在另一个人的正上方15层,附近的山上等,则可以工作。未经广泛测试。它假定你不关心20公里以外的高度。然后,当您靠近另一个人时,它会进行高度更正。因此,对于距离彼此20米,但高100米的两个人,你会得到约102米的距离。最后,我切换到公里返回。还在原始代码中发现了一个南方虫。
#define DEG2RAD(degrees) (degrees * 0.01745329251)
#define RADIUS_OF_EARTH 6371000.0
// km
+ (double)getDistanceFromStartCoords:(CLLocationCoordinate2D)start altStart:(double)altStart andEndCoords:(CLLocationCoordinate2D)end altEnd:(double)altEnd;
{
double argument = (cos(DEG2RAD(start.latitude))*
cos(DEG2RAD(end.latitude))*
cos((-1*DEG2RAD(end.longitude))-
(-1*DEG2RAD(start.longitude)))) +
(sin(DEG2RAD(start.latitude))*
sin(DEG2RAD(end.latitude)));
double dist = 0.0;
if (argument < 1.0 && argument > -1.0) // acos will return nan for very small (0) distance
dist = acos(argument)*RADIUS_OF_EARTH;
// else
// NSLog(@"found bug, %f", acos(argument));
// Altitude hack.
// blend in an altitude correction (blend for smoothness)
// add in altitude difference
double altDiff = fabs(altStart - altEnd); // altdiff
double factor = 1.0 - dist/20000.0;
if (factor < 0.0)
factor = 0.0;
dist += sqrt(dist*dist + factor*altDiff*altDiff);
//NSLog(@"distance found, %f", dist);
return dist/1000.0; // return km
}
相关问题
- 1. 获取两个地理点之间的距离 - 离线地图
- 2. 两点之间的测地距离
- 3. 如何计算两个地理点之间的距离
- 4. 我想获得两个地理点之间的距离android
- 5. 获取两个地理点之间的距离
- 6. 源代码找到两个地理点之间的距离
- 7. 两个地址之间的距离
- 8. 两个地理点的距离android
- 9. 距离之间的两个
- 10. 的Xcode在谷歌两个地点之间的距离映射
- 11. 使用ST_SPHERICALDISTANCE的两个地理坐标之间的Teradata距离
- 12. 在两个地点之间的道路上获得距离
- 13. 如何找到两个地点之间的距离?
- 14. 两个地方之间的物理距离
- 15. 两点之间的Cloudmade距离
- 16. Hive:两点之间的距离
- 17. Matlab中两点之间的距离
- 18. R中2个地理点之间的距离计算
- 19. 道路距离,两地之间的实际距离
- 20. 我如何找到两个地理坐标点之间的距离
- 21. 如何获得距离眩晕两点之间的距离
- 22. 两个地址之间的直线距离 - Google地图API
- 23. 如何计算谷歌地图中两点之间的距离?
- 24. 计算bing地图中两点之间的距离
- 25. 如何显示地图上两点之间的距离
- 26. 地球上两点之间的球形距离
- 27. 使用谷歌地图api工作两点之间的距离?
- 28. 两个GEO位置之间的距离
- 29. 两个经纬度之间的距离
- 30. 两个词之间的语义距离
我无法解析您的问题。你可以添加一些标点符号吗? – mik01aj 2011-02-03 12:42:34