关于定位功能 ("附近的人"类似微信那种), 有没有什么现成的轮子可以用

2015-06-16 19:05:45 +08:00
 randyzhao

是这样, 开发个 app, 里面有这么个功能.

查看附近的人.

那么问题来了, 有没有什么现成的轮子可以实现这个功能.

没有的话, 就只能每次把自己的定位信息上传到服务器, 然后存数据库.
每次客户端请求寻找附近的人, 拿当前用户的坐标, 计算一个范围, 然后去数据库里捞数据.

时间着急不想造轮子了.

4748 次点击
所在节点    程序员
18 条回复
jokester
2015-06-16 19:39:49 +08:00
google service有, 不知国内能不能用
randyzhao
2015-06-16 19:45:03 +08:00
@jokester 让所有用户都用的话, 成本有点高...
holmesabc
2015-06-16 20:00:03 +08:00
好像有百度还是高德的sdk
laoertongzhi
2015-06-16 20:25:17 +08:00
这种事情不应该找地图厂商么?
randyzhao
2015-06-16 20:32:35 +08:00
@laoertongzhi 如果有朋友有实际的使用经验 我想听听 然后横向对比一下

如果时间很充裕的话, 我肯定每家都试用一下 自己去做对比....

时间比较紧张, 只好做伸手党了...
randyzhao
2015-06-16 20:37:22 +08:00
@holmesabc 百度的看的晕乎乎的 高德的还清楚些
国内是不是也就这两家靠谱了?
icodesign
2015-06-16 20:44:55 +08:00
@randyzhao 高德有个云图,以前用它实现过类似的功能
randyzhao
2015-06-16 20:47:23 +08:00
@icodesign 恩 高德的我看了 但是看的不细, 用起来有什么难受的地方吗?
比如请求限制, 响应速度什么的.
ETiV
2015-06-16 21:07:38 +08:00
自己撸过的飘过...

存数据库前用 GeoHash 换算一下经纬度. 然后查附近的人就靠这个 geohash string[0:n] 去 LIKE 'xxx%', 当然经纬度也跟着一起存进去.

找完附近的人, 再用经纬度去算两边的距离.
再对距离排序.
当然也可以不排, QQ的附近的人就没有按距离排序.
为了不泄漏其他用户的所在位置, 下发数据的时候不要把别人的经纬度带下去就行了.

看你服务端用啥语言, Node.js 俩小时(?)搞定.
randyzhao
2015-06-16 23:30:47 +08:00
@ETiV
以后要考虑扩展性的话
比如:
后期引入百度高德之类的 SDK 把附近的人的数据在地图上展示
除开记录 GeoHash 之外, 应该还要记录经纬度?

另外, APP 用户需要给自己的定位起名字
比如:
我在"人民大会堂的女厕所"
等于我又要维护一套地点名的表咯...

=.=
ETiV
2015-06-17 10:04:21 +08:00
经纬度要存的,要不没法算距离.

单纯的"附近的人", 不要显示在地图上. 只有"好友"之间或者对方允许才应该显示.

用户给自己的所处位置起名, 第三方SDK也不支持呀( 或者有支持的么? ). 肯定要自己维护的.
randyzhao
2015-06-17 14:00:34 +08:00
@ETiV 所以 先根据 GeoHash 拿出块数据
再用 x y 去计算距离再排序, 这意思吧

第三方SDK也不支持呀( 或者有支持的么? )
看了下高德...还真的可以实现.
bigfei
2015-06-17 14:29:56 +08:00
randyzhao
2015-06-17 14:42:28 +08:00
@bigfei 收下我的膝盖.
ETiV
2015-06-17 18:20:02 +08:00
对, geohash 是为了先筛选可能近的人.
你多搜搜geohash资料, 精确到8位还是9位长度的geohash字符串, 相隔7米的样子~

手机上大多数的 SDK 只能给你经纬度, geohash 都要你自己, 放服务器上来算.
randyzhao
2015-06-18 01:57:52 +08:00
@ETiV 恩 我看了 算 GeoHash 轮子很多.
再次感谢~
Mutoo
2015-06-18 09:35:06 +08:00
噗这页 http 一直打不开,挂 https 一看,原来是「轮子」
randyzhao
2015-06-18 11:07:38 +08:00
@Mutoo 23333 居然被过滤

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/199059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX