【问题标题】:Geocoder.geocode({'placeId': placeId}) doesn't return administrative_area_level_2/1Geocoder.geocode({'placeId': placeId}) 不返回 Administrative_area_level_2/1
【发布时间】:2016-11-29 11:22:53
【问题描述】:

我对 Geocoder.geocode({'placeId': placeId}) 在特定位置的结果有疑问 (即巴黎大街 34 号)然后我会得到 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 类型。不幸的是,我搜索了很多,但一无所获。我认为这个对我的请求的定义可能会有所帮助 https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderComponentRestrictions 但不是。

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

我创建了带有街道、号码、城市的确切地址的请求,并返回了仅包含以下键的地址组件:路线、地区、国家和邮政编码, 但如果我将请求更改为 ..address=brusno 结果包含管理区域级别 2 和管理区域级别 1。我怎样才能得到第一个选项的管理区域级别 1 和管理区域级别 2?

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

【问题讨论】:

标签: google-maps google-maps-api-3 google-geocoder


【解决方案1】:

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

此外,关于仅使用 address=brusno 的请求,您会注意到此处的管理区域级别_# 位于 Banská Bystrica 区,而不是您使用的地方,例如布鲁斯诺的 Luka。

如果您查询该地址,您会发现它是相同的结果。

使用 address=Banská Bystrica 区

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

因此,也许像文档所述,并非所有地方(卢卡、布鲁斯诺)都表现出这些行政级别。

【讨论】:

  • 谢谢,但很遗憾,因为我想创建基于 google api 的自动完成输入,用户将他的具体地址放在斯洛伐克国家,我的应用程序将返回地区和地区。然后结果是我需要创建第二个请求,它将使用先前地址组件中的位置并仅使用位置构建新请求。 (例如地址=brusno)
猜你喜欢
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
相关资源
最近更新 更多