• 请不要在回答技术问题时复制粘贴 AI 生成的内容
randyzhao
V2EX  ›  程序员

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

  •  
  •   randyzhao · Jun 16, 2015 · 5319 views
  •   You need to sign in to view this topic
    This topic created in 4028 days ago, the information mentioned may be changed or developed.

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

    查看附近的人.

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

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

    时间着急不想造轮子了.

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

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

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

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

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

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

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

    =.=
    ETiV
        11
    ETiV  
       Jun 17, 2015
    经纬度要存的,要不没法算距离.

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

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

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

    手机上大多数的 SDK 只能给你经纬度, geohash 都要你自己, 放服务器上来算.
    randyzhao
        16
    randyzhao  
    OP
       Jun 18, 2015
    @ETiV 恩 我看了 算 GeoHash 轮子很多.
    再次感谢~
    Mutoo
        17
    Mutoo  
       Jun 18, 2015
    噗这页 http 一直打不开,挂 https 一看,原来是「轮子」
    randyzhao
        18
    randyzhao  
    OP
       Jun 18, 2015
    @Mutoo 23333 居然被过滤
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3008 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:15 · PVG 17:15 · LAX 02:15 · JFK 05:15
    ♥ Do have faith in what you're doing.