作者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