Re: [問題] 座標位置
※ 引述《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
10/05 14:31, 1F
→
10/05 14:33, , 2F
10/05 14:33, 2F
→
10/06 09:29, , 3F
10/06 09:29, 3F
討論串 (同標題文章)