Azure Maps城市自动补全:唯一ID与标准化名称技术咨询
解答Azure Maps搜索地址API相关问题
我来逐个拆解你遇到的三个问题:
问题1:Property ID是什么?具备持久性吗?莫斯科的ID是否始终为116970?
这个property id是Azure Maps用来唯一标识地理实体的专属标识符,它绑定的是具体的地理对象(比如莫斯科这座城市),和你用什么语言、缩写查询无关——就像你测试时用Москва、mos、mosco都返回同一个ID,就是因为它们指向的是同一个实体。
从官方的设计逻辑来看,这个ID是具备持久性的:只要对应的地理实体没有发生重大变更(比如行政区域合并、官方改名这种极端罕见的情况),ID就会一直保持不变。所以莫斯科的116970后缀ID,只要城市本身的实体属性没发生根本性变化,就会一直是这个值。
问题2:如何获取城市的标准化名称?
要拿到城市的标准化名称,你可以从这两个方向调整请求:
- 指定语言参数:调用Get Search Address API时,加上
language参数。比如想要俄语的官方标准化名称就设language=ru-RU,想要英文就设language=en-US,返回结果里的address.municipality或address.localName字段,就是对应语言下的标准化城市名。 - 限定搜索区域:配合
countrySet=RU参数缩小搜索范围,避免出现同名城市的歧义,确保返回的结果就是目标城市,对应的名称也会更准确。
如果需要完整的标准化地址,可以参考address.freeformAddress字段,但如果只需要城市名,优先取municipality或localName。
问题3:能否通过该ID获取地理对象的名称?
完全可以!你可以使用Azure Maps的Search Details API,通过这个Property ID反向查询实体的详细信息。
构造请求时,把参数设为id=RU/GEO/p0/116970,再搭配api-version=1.0和你的订阅密钥即可。这个API会返回该地理实体的完整属性,包括多语言版本的名称(同样可以通过language参数指定返回的语言),完美解决通过ID获取名称的需求。
内容的提问来源于stack exchange,提问作者vasa_c
相关产品推荐
相关产品推荐

