Re: [問題] 座標位置

看板MacDev作者 (zonble)時間12年前 (2011/10/05 14:05), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《SlimeEditor (菜瓜布)》之銘言: : ※ 引述《starkite (可樂果)》之銘言: : 假設a點 經緯度是 lat_a, lng_a : b點 經緯度是 lat_b, lng_b : 彼此間的距離d = sqrt(pow(lat_a-lat_b, 2)+pow(lng_a-lng_b, 2)) : 理論上用d做排序來塞array應該就可了吧? 地球是圓的,所以這樣算會有問題。 簡單貼一下之前用過的 code… static CGFloat degreeToRadian(CGFloat degree) { return (CGFloat)(degree * M_PI / 180.0); } static CGFloat distanceKM(CGFloat lat1, CGFloat lon1, CGFloat lat2, CGFloat lon2) { CGFloat theta = lon1 - lon2; CGFloat dist = sin(degreeToRadian(lat1)) * sin(degreeToRadian(lat2)) + cos(degreeToRadian(lat1)) * cos(degreeToRadian(lat2)) * cos(degreeToRadian(theta)); dist = acos(dist) * 6373.0; return dist; } static CGFloat distanceMile(CGFloat lat1, CGFloat lon1, CGFloat lat2, CGFloat lon2) { CGFloat theta = lon1 - lon2; CGFloat dist = sin(degreeToRadian(lat1)) * sin(degreeToRadian(lat2)) + cos(degreeToRadian(lat1)) * cos(degreeToRadian(lat2)) * cos(degreeToRadian(theta)); dist = acos(dist) * 3960.0; } -- zonble.net cocoa.zonble.net -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.69.67.252

10/05 14:31, , 1F
最後*3960.0是指? 我本來以為是地球半徑 0_0a
10/05 14:31, 1F

10/05 14:33, , 2F
阿 我知道了 我沒看到Mile ~
10/05 14:33, 2F

10/06 09:29, , 3F
還要考慮地球是圓的@@ 快研究去 謝謝大大們!!
10/06 09:29, 3F
文章代碼(AID): #1EY_Eywu (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1EY_Eywu (MacDev)