谷歌地图 - Geocoder.geocode({'placeId': placeId}) 不返回 administrative_area_level_2/1



我对特定位置的Geocoder.geocode({'placeId':placeId})的结果有问题(即巴黎34号大街)然后我会得到地址_组成部分:street,sublocality,locality,country,postal_code.

 function geocodePlaceId(geocoder, placeId, callback) {
      geocoder.geocode({'placeId': placeId}, function(results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
          if (results[0]) {
            console.log(results[0]);
            callback(results[0].address_components);
          } 
      });
  }

上面的精确位置代码(包含街道nmbr、街道和城市)返回对我来说不重要的address_components。

但是我想要administrative_area_level_2administrative_area_level_1类型。不幸的是,我在谷歌上搜索了很多,却一无所获。我认为这个定义对我的请求很有帮助https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderComponentRestrictions但不是。

示例:https://maps.googleapis.com/maps/api/geocode/json?&地址=luka%20666%20bruno

我创建了带有街道、号码、城市和返回的address_components的确切地址的请求,其中只包含这些密钥:route、locality、country和postal_code,但是如果我将请求更改为。。address=brusno结果包含administrative_area_level2和administrative_area_level1。我如何获得administrative_area_level_1和administrative_area_level_2作为第一个选项

你知道如何解决这个问题吗?或者我可以影响返回的address_components类型吗?

根据谷歌地图地理编码文档,administrative_area_level_#表示国家级以下的民事实体。并非所有国家都具有这样的行政级别。在大多数情况下,administrative_area_level_#短名称将与ISO 3166-2细分和其他广泛流传的列表紧密匹配然而,这并不能保证,因为我们的地理编码结果是基于各种信号和位置数据的。所以也许这就是问题所在

此外,关于仅使用address=brusno的请求,您会注意到这里的administrative_area_level_#位于BanskáBystrica区,而不是您使用的地方,如布鲁斯诺的卢卡。

如果你查询那个地址,你会发现结果是一样的。

使用地址=BanskáBystrica District

https://maps.googleapis.com/maps/api/geocode/json?&address=Bansk%C3%A1%20Bystrica%20District

因此,也许就像文件中所说的那样,并非所有地方(卢卡、布鲁斯诺)都表现出这些行政级别。

最新更新