作者mickfang (心該停留在哪裡)
看板MacDev
標題[問題] 兩點或多點座標的距離計算
時間Fri Oct 16 04:42:31 2009
公司想要開發像iphone上的AroundMe
也就是利用iphone的gps功能
得到目前使用者的座標或地址之後
顯示最近的標的物或地點
但是很困惑的地方是怎麼知道最近點在哪呢?
目前資料庫擁有很多預設的地點的座標
也可以抓取目前使用者的座標
總不會只是兩者相加減吧?
有些網站可以讓使用者輸入地址
然後就會顯示最近幾個店面的位置
這是利用什麼方法進行計算呢?
希望有大大能分享一下經驗
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 66.238.89.65
1F:推 carymask:兩座標點的距離不是((x1-x2)^2 + (y1-y2)^2)取平方根嗎? 10/16 04:54
2F:推 Blueshiva:距離不照樓上那樣算的話,難不成要寫成積分嗎 XD 10/16 05:00
3F:→ Blueshiva:至於找最近的地點,最暴力就全部都算算看,聰明一點的話 10/16 05:01
4F:→ Blueshiva:就把整個平面分塊,先找出目前使用者在哪一塊,然後把周 10/16 05:01
5F:→ Blueshiva:圍八塊區域中的所有點列出來找,會快很多 10/16 05:02
6F:→ mickfang:本人是cocoa新手,是該用NS????來做計算呢?謝謝 10/16 05:29
7F:→ mickfang:二樓,能否請教是否有相關文件可以參考如何實作呢? 10/16 05:32
8F:→ mickfang:因為您的回答還是讓我無從下手,謝謝 10/16 05:33
9F:→ adms:是用sqlite存起來嘛? 10/16 06:21
10F:→ adms:一般來說 如果要節省效率 會預先作好資料分類 10/16 06:22
11F:→ adms:就像2F舉的例子類似 把目前座標周圍分類好的座標拉進來計算 10/16 06:24
12F:→ adms:再經過距離和其他條件篩選 10/16 06:25
13F:→ adms:至於周圍點的算法 不見得要用取平方根求距離 10/16 06:26
14F:→ adms:如果只是簡單顯示周圍有甚麼點 可以用碰撞偵測的方法 10/16 06:26
15F:→ adms:虛擬一個框框範圍 符合範圍(碰撞)內的點都拉出來顯示 10/16 06:27
16F:推 ccpz:算距離可以用 CLLocation 的 10/16 11:13
17F:→ ccpz:- (CLLocationDistance)getDistanceFrom: 10/16 11:14
18F:→ ccpz:找鄰近點是資料結構的問題了, 像這就是一種可用的 DS lib: 10/16 11:15
20F:推 Blueshiva:其實- (CLLocationDistance)getDistanceFrom:應該也是算 10/16 12:41
21F:→ Blueshiva:平方根 :p 10/16 12:41
22F:推 ccpz:他是把地球當一個圓球去算球面距離 10/16 12:53
24F:推 Blueshiva:這麼威 @.@? 不過原po應該不需要到這麼精細 10/16 15:15
25F:推 leondemon:幾公里以內用平面座標算誤差不會太大啦~ XD 10/16 17:44
26F:→ mickfang:資料結構....都已經還給老師了 哈 沒想到這複雜度超出 10/16 23:53
27F:→ mickfang:原先的構想了,感謝cc大提供一些資訊,可以少走彎路 10/16 23:54
28F:→ mickfang:至於資料分類或分區塊我得在想想要怎麼實作比較好,謝謝 10/16 23:58