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. 源代碼找到兩個地理點之間的距離
- 5. 我想獲得兩個地理點之間的距離android
- 6. 如何計算兩個地理點之間的距離
- 7. 兩個地址之間的距離
- 8. 兩個地理點的距離android
- 9. 距離之間的兩個
- 10. 快速計算兩點之間的地理距離
- 11. 如何找到在離線兩個地理點之間的道路距離android
- 12. 的Xcode在谷歌兩個地點之間的距離映射
- 13. 使用ST_SPHERICALDISTANCE的兩個地理座標之間的Teradata距離
- 14. 兩個地點之間的距離會不斷變化?
- 15. 在兩個地點之間的道路上獲得距離
- 16. 兩個地點之間的距離不對?
- 17. 如何獲得兩個地點之間的駕駛距離?
- 18. 如何找到兩個地點之間的距離?
- 19. java中兩個地理位置之間的距離:NaN
- 20. 計算兩個地理位置之間的距離
- 21. 兩個區域之間的地理距離
- 22. 兩個地方之間的物理距離
- 23. 得到兩地之間的距離
- 24. 兩點之間的Cloudmade距離
- 25. OpenCV中兩點之間的距離
- 26. Hive:兩點之間的距離
- 27. Matlab中兩點之間的距離
- 28. R中2個地理點之間的距離計算
- 29. 道路距離,兩地之間的實際距離
- 30. 如何找到黑莓中兩個地理點之間的距離?
我無法解析您的問題。你可以添加一些標點符號嗎? – mik01aj 2011-02-03 12:42:34