Geocoder.geocode({'placeId':placeId})不返回administrative_area_level_2 / 1

问题描述 投票:0回答:1

我对Geocoder.geocode({'placeId':placeId})的结果在特定位置(即Main Street 34,Paris)有问题,然后我将获得address_components: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类型。不幸的是,我google了很多,没有。我认为我的请求的这个定义可能有用https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderComponentRestrictions但不是。

示例:https://maps.googleapis.com/maps/api/geocode/json?&address=luka%20666%20brusno

我创建了具有街道,数字,城市的确切地址的请求,并返回了仅包含以下密钥的address_components:route,locality,country和postal_code,但是如果我将请求更改为.. address = brusno结果包含administrative_area_level_2和administrative_area_level_1。如何获得第一个选项的administrative_area_level_1和administrative_area_level_2?

您是否知道如何解决此问题或者我是否可以影响返回的address_components类型?

google-maps google-maps-api-3 google-geocoder
1个回答
0
投票

根据Google Maps Geocoding文档,administrative_area_level_#表示国家/地区以下的民用实体。并非所有国家都表现出这些行政级别。在大多数情况下,administrative_area_level_#短名称将与ISO 3166-2细分和其他广泛传播的列表紧密匹配;然而,由于我们的地理编码结果基于各种信号和位置数据,因此无法保证这一点。所以也许这就是问题所在。

另外,关于仅使用address = brusno的请求,您会注意到这里的administrative_area_level_#位于BanskáBystrica区,而不是像Luka,Brusno那样使用的地方。

如果您查询该地址,您会注意到它是相同的结果。

使用地址= Banska Bystrica区

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

所以也许像文档说明并非所有地方(Luka,Brusno)都展示了这些管理级别。

© www.soinside.com 2019 - 2024. All rights reserved.