V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Eyon
V2EX  ›  问与答

高德逆地理编码,如何按照需求显示定位地址

  •  
  •   Eyon · 358 天前 · 822 次点击
    这是一个创建于 358 天前的主题,其中的信息可能已经有所发展或是发生改变。
    程序中使用了高德的逆地理编码,也就是通过经纬度定位用户地址。

    我想要实现的功能是:

    在城市中,直接定位所在城市,如北京市朝阳区 xxx 路,直接显示用户地址在”北京市“
    而如果在农村,直接定位到县级城市,比如四川省南充市南部县 xx 乡 xx 村,则显示用户地址在“南部县”

    看了一下高德的借口,显示到县级的 api 返回结果是:result.regeocode.addressComponent.district
    但是如果用这个数据,北京市朝阳区某某路的用户会被定位到"朝阳区",而不是我要求的“北京市”,求教
    13 条回复    2020-12-09 17:11:18 +08:00
    murmur
        1
    murmur  
       358 天前
    是 API 错了还是不同数据不一致,我看官网的 demo addressComponent.province 就是北京市

    restapi.amap.com/v3/geocode/regeo 用这个接口

    顺便这么粗略的位置 IP 定位做不到么
    Eyon
        2
    Eyon  
    OP
       358 天前
    @murmur province 肯定是没有问题的,但是我要的是如果在农村的话,显示到县级城市,也就是 district
    murmur
        3
    murmur  
       358 天前
    @Eyon 那就是需求不合理,为什么北京显示北京市,四川就不显示南充市,对吧

    如果只是个别城市有需求,直接写死就可以,中国的直辖市就那么几个
    Eyon
        4
    Eyon  
    OP
       358 天前
    @murmur 这个需求没什么不合理的吧

    比如大众点评, 你身处北京市,就显示整个北京市的餐厅排名

    但是在农村,显示最近的城市就是县城。
    czfy
        5
    czfy  
       358 天前
    这个是直辖市的问题,在一般的接口里,北京、上海、重庆、天津这些直辖市都是被当成省行政级别的,和四川省同一级
    直辖市下的区县级,就和其他省级区域的市当成了同一级
    murmur
        6
    murmur  
       358 天前
    @czfy 也不是直辖市,如果是直辖市,就是北京-南充这样的对应关系

    如果你看南充的下属,他有区、有县、甚至还有个市,就离谱

    换个思路,那问题就简单了,可以网上找一个开源的地址选择器组件,把你所有认为属于农村的区域都存下来,这个东西放到 app 里压缩后也不大,直接硬匹配就可以
    mcluyu
        7
    mcluyu  
       358 天前
    没有叫 city 的字段吗
    Eyon
        8
    Eyon  
    OP
       358 天前
    @mcluyu 有 city 字段,但是县级城市被认为不是 city
    NotNil1
        9
    NotNil1  
       358 天前
    有些事情适合枚举列出所有情况,毕竟直辖市就那么几个,省也就那么几个
    lagoon
        10
    lagoon  
       358 天前
    字符串截取?

    毕竟行政定义上,县和市辖区,是一级的。

    所以你的需求其实是,如果 xxx,显示这级;如果 xxx,显示上一级。

    要么,字符串截取。要么,给个地级市的数据去匹配。
    TimePPT
        11
    TimePPT  
       358 天前
    可以尝试用区域编码判断匹配父级,想怎么匹怎么匹
    判断标准可以参照 gov 的官方文件——>《 2020 年 10 月中华人民共和国县以上行政区划代码》 http://www.mca.gov.cn/article/sj/xzqh/2020/2020/2020112010001.html
    Eyon
        12
    Eyon  
    OP
       358 天前
    @TimePPT


    @lagoon

    其实需求很简单,如果人在城市里,用户的某种需求范围就是整个市
    如果人在农村里,那么用户的某种需求范围就是离他最近的县级城市

    还有一种情况,如果人在农村里,行政区划上属于 a 县,但是距离 b 县城更近,那么用户可以选择需求范围在 a 县还是 b 县
    TimePPT
        13
    TimePPT  
       358 天前
    @Eyon
    「还有一种情况,如果人在农村里,行政区划上属于 a 县,但是距离 b 县城更近,那么用户可以选择需求范围在 a 县还是 b 县」
    这块如果判断远近坑会非常多,比如有一种东西叫「飞地」,你要这么搞除非自己定制一套经纬度电子围栏。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2653 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:15 · PVG 21:15 · LAX 05:15 · JFK 08:15
    ♥ Do have faith in what you're doing.