[問題] 兩點或多點座標的距離計算

看板MacDev作者 (心該停留在哪裡)時間14年前 (2009/10/16 04:42), 編輯推噓7(7021)
留言28則, 6人參與, 最新討論串1/2 (看更多)
公司想要開發像iphone上的AroundMe 也就是利用iphone的gps功能 得到目前使用者的座標或地址之後 顯示最近的標的物或地點 但是很困惑的地方是怎麼知道最近點在哪呢? 目前資料庫擁有很多預設的地點的座標 也可以抓取目前使用者的座標 總不會只是兩者相加減吧? 有些網站可以讓使用者輸入地址 然後就會顯示最近幾個店面的位置 這是利用什麼方法進行計算呢? 希望有大大能分享一下經驗 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 66.238.89.65

10/16 04:54, , 1F
兩座標點的距離不是((x1-x2)^2 + (y1-y2)^2)取平方根嗎?
10/16 04:54, 1F

10/16 05:00, , 2F
距離不照樓上那樣算的話,難不成要寫成積分嗎 XD
10/16 05:00, 2F

10/16 05:01, , 3F
至於找最近的地點,最暴力就全部都算算看,聰明一點的話
10/16 05:01, 3F

10/16 05:01, , 4F
就把整個平面分塊,先找出目前使用者在哪一塊,然後把周
10/16 05:01, 4F

10/16 05:02, , 5F
圍八塊區域中的所有點列出來找,會快很多
10/16 05:02, 5F

10/16 05:29, , 6F
本人是cocoa新手,是該用NS????來做計算呢?謝謝
10/16 05:29, 6F

10/16 05:32, , 7F
二樓,能否請教是否有相關文件可以參考如何實作呢?
10/16 05:32, 7F

10/16 05:33, , 8F
因為您的回答還是讓我無從下手,謝謝
10/16 05:33, 8F

10/16 06:21, , 9F
是用sqlite存起來嘛?
10/16 06:21, 9F

10/16 06:22, , 10F
一般來說 如果要節省效率 會預先作好資料分類
10/16 06:22, 10F

10/16 06:24, , 11F
就像2F舉的例子類似 把目前座標周圍分類好的座標拉進來計算
10/16 06:24, 11F

10/16 06:25, , 12F
再經過距離和其他條件篩選
10/16 06:25, 12F

10/16 06:26, , 13F
至於周圍點的算法 不見得要用取平方根求距離
10/16 06:26, 13F

10/16 06:26, , 14F
如果只是簡單顯示周圍有甚麼點 可以用碰撞偵測的方法
10/16 06:26, 14F

10/16 06:27, , 15F
虛擬一個框框範圍 符合範圍(碰撞)內的點都拉出來顯示
10/16 06:27, 15F

10/16 11:13, , 16F
算距離可以用 CLLocation 的
10/16 11:13, 16F

10/16 11:14, , 17F
- (CLLocationDistance)getDistanceFrom:
10/16 11:14, 17F

10/16 11:15, , 18F
找鄰近點是資料結構的問題了, 像這就是一種可用的 DS lib:
10/16 11:15, 18F

10/16 11:15, , 19F
http://tinyurl.com/yjaoax8 這是 java lib, ObjC 要找找看
10/16 11:15, 19F

10/16 12:41, , 20F
其實- (CLLocationDistance)getDistanceFrom:應該也是算
10/16 12:41, 20F

10/16 12:41, , 21F
平方根 :p
10/16 12:41, 21F

10/16 12:53, , 22F
他是把地球當一個圓球去算球面距離
10/16 12:53, 22F

10/16 12:54, , 23F

10/16 15:15, , 24F
這麼威 @.@? 不過原po應該不需要到這麼精細
10/16 15:15, 24F

10/16 17:44, , 25F
幾公里以內用平面座標算誤差不會太大啦~ XD
10/16 17:44, 25F

10/16 23:53, , 26F
資料結構....都已經還給老師了 哈 沒想到這複雜度超出
10/16 23:53, 26F

10/16 23:54, , 27F
原先的構想了,感謝cc大提供一些資訊,可以少走彎路
10/16 23:54, 27F

10/16 23:58, , 28F
至於資料分類或分區塊我得在想想要怎麼實作比較好,謝謝
10/16 23:58, 28F
文章代碼(AID): #1Aruauqu (MacDev)
文章代碼(AID): #1Aruauqu (MacDev)