关于定位功能 ("附近的人"类似微信那种), 有没有什么现成的轮子可以用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
randyzhao
V2EX    程序员

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

  •  
  •   randyzhao 2015 年 6 月 16 日 5102 次点击
    这是一个创建于 3861 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    查看附近的人.

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

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

    时间着急不想造轮子了.

    18 条回复    2015-06-18 11:07:38 +08:00
    jokester
        1
    jokester  
       2015 年 6 月 16 日
    google service有, 不知国内能不能用
    randyzhao
        2
    randyzhao  
    OP
       2015 年 6 月 16 日
    @jokester 让所有用户都用的话, 成本有点高...
    holmesabc
        3
    holmesabc  
       2015 年 6 月 16 日
    好像有百度还是高德的sdk
    laoertongzhi
        4
    laoertongzhi  
       2015 年 6 月 16 日
    这种事情不应该找地图厂商么?
    randyzhao
        5
    randyzhao  
    OP
       2015 年 6 月 16 日
    @laoertongzhi 如果有朋友有实际的使用经验 我想听听 然后横向对比一下

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

    时间比较紧张, 只好做伸手党了...
    randyzhao
        6
    randyzhao  
    OP
       2015 年 6 月 16 日
    @holmesabc 百度的看的晕乎乎的 高德的还清楚些
    国内是不是也就这两家靠谱了?
    icodesign
        7
    icodesign  
       2015 年 6 月 16 日   1
    @randyzhao 高德有个云图,以前用它实现过类似的功能
    randyzhao
        8
    randyzhao  
    OP
       2015 年 6 月 16 日
    @icodesign 恩 高德的我看了 但是看的不细, 用起来有什么难受的地方吗?
    比如请求限制, 响应速度什么的.
    ETiV
        9
    ETiV  
       2015 年 6 月 16 日   1
    自己撸过的飘过...

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

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

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

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

    =.=
    ETiV
        11
    ETiV  
       2015 年 6 月 17 日
    经纬度要存的,要不没法算距离.

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

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

    第三方SDK也不支持呀( 或者有支持的么? )
    看了下高德...还真的可以实现.
    bigfei
        13
    bigfei  
       2015 年 6 月 17 日
    randyzhao
        14
    randyzhao  
    OP
       2015 年 6 月 17 日
    @bigfei 收下我的膝盖.
    ETiV
        15
    ETiV  
       2015 年 6 月 17 日
    对, geohash 是为了先筛选可能近的人.
    你多搜搜geohash资料, 精确到8位还是9位长度的geohash字符串, 相隔7米的样子~

    手机上大多数的 SDK 只能给你经纬度, geohash 都要你自己, 放服务器上来算.
    randyzhao
        16
    randyzhao  
    OP
       2015 年 6 月 18 日
    @ETiV 恩 我看了 算 GeoHash 轮子很多.
    再次感谢~
    Mutoo
        17
    Mutoo  
       2015 年 6 月 18 日
    噗这页 http 一直打不开,挂 https 一看,原来是「轮子」
    randyzhao
        18
    randyzhao  
    OP
       2015 年 6 月 18 日
    @Mutoo 23333 居然被过滤
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2658 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 03:22 PVG 11:22 LAX 19:22 JFK 22:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86