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

2020-12-09 15:00:53 +08:00
 Eyon
程序中使用了高德的逆地理编码,也就是通过经纬度定位用户地址。

我想要实现的功能是:

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

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

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

顺便这么粗略的位置 IP 定位做不到么
Eyon
2020-12-09 15:14:54 +08:00
@murmur province 肯定是没有问题的,但是我要的是如果在农村的话,显示到县级城市,也就是 district
murmur
2020-12-09 15:18:16 +08:00
@Eyon 那就是需求不合理,为什么北京显示北京市,四川就不显示南充市,对吧

如果只是个别城市有需求,直接写死就可以,中国的直辖市就那么几个
Eyon
2020-12-09 15:24:54 +08:00
@murmur 这个需求没什么不合理的吧

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

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

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

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

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

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

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


@lagoon

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

还有一种情况,如果人在农村里,行政区划上属于 a 县,但是距离 b 县城更近,那么用户可以选择需求范围在 a 县还是 b 县
TimePPT
2020-12-09 17:11:18 +08:00
@Eyon
「还有一种情况,如果人在农村里,行政区划上属于 a 县,但是距离 b 县城更近,那么用户可以选择需求范围在 a 县还是 b 县」
这块如果判断远近坑会非常多,比如有一种东西叫「飞地」,你要这么搞除非自己定制一套经纬度电子围栏。

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

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

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

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

© 2021 V2EX