【问题标题】:How to obtain city name in case when the google maps api address components does not provide itgoogle maps api地址组件不提供时如何获取城市名
【发布时间】:2018-03-16 10:27:33
【问题描述】:

我正在使用 angular-maps 开发 Google 地理编码 API。

我看到,对于地图上的某些地方,我们没有得到实际的城市名称,而是在地址组件的locality 部分中获得了子地区名称。

请在下面查看此类情况的示例。我得到了locality 部分的值Kesklinna,其中城市名称应该是Tallinn

[
   {
      "long_name":"1",
      "short_name":"1",
      "types":[
         "street_number"
      ]
   },
   {
      "long_name":"Suur Rannavärav",
      "short_name":"Suur Rannavärav",
      "types":[
         "route"
      ]
   },
   {
      "long_name":"Kesklinn",
      "short_name":"Kesklinn",
      "types":[
         "political",
         "sublocality",
         "sublocality_level_1"
      ]
   },
   {
      "long_name":"Kesklinna",
      "short_name":"Kesklinna",
      "types":[
         "locality",
         "political"
      ]
   },
   {
      "long_name":"Harju maakond",
      "short_name":"Harju maakond",
      "types":[
         "administrative_area_level_1",
         "political"
      ]
   },
   {
      "long_name":"Estonia",
      "short_name":"EE",
      "types":[
         "country",
         "political"
      ]
   },
   {
      "long_name":"10414",
      "short_name":"10414",
      "types":[
         "postal_code"
      ]
   }
]

如果我们将标记放置在离这个地方大约 100 米的地方,我得到的是正确的城市 Tallinn

[
   {
      "long_name":"10",
      "short_name":"10",
      "types":[
         "street_number"
      ]
   },
   {
      "long_name":"Rannamäe tee",
      "short_name":"Rannamäe tee",
      "types":[
         "route"
      ]
   },
   {
      "long_name":"Kesklinn",
      "short_name":"Kesklinn",
      "types":[
         "political",
         "sublocality",
         "sublocality_level_1"
      ]
   },
   {
      "long_name":"Tallinn",
      "short_name":"Tallinn",
      "types":[
         "locality",
         "political"
      ]
   },
   {
      "long_name":"Harju maakond",
      "short_name":"Harju maakond",
      "types":[
         "administrative_area_level_1",
         "political"
      ]
   },
   {
      "long_name":"Estonia",
      "short_name":"EE",
      "types":[
         "country",
         "political"
      ]
   },
   {
      "long_name":"10133",
      "short_name":"10133",
      "types":[
         "postal_code"
      ]
   }
]

这是谷歌地图地理编码器上的某种错误吗?或者这是预期的? 如何从标记位置确定正确的城市名称?

【问题讨论】:

    标签: angular google-maps-api-3 google-geocoding-api


    【解决方案1】:

    这听起来像是数据问题。在 Google 地图中查看塔林的边界

    https://www.google.com/maps/place/Tallinn,+Estonia/@59.420911,24.7681033,12.89z/data=!4m5!3m4!1s0x46929499df5616bf:0x400b36d18fc6270!8m2!3d59.4369608!4d24.7535747

    第一个地址显然位于塔林多边形内

    https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3DSuur%2520Rannav%25E4rav%25201%252C%2520Kesklinna%252C%2520Estonia

    我试图找到一个名为 Kesklinna 的地方,但它不存在

    https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3DKesklinna%252C%2520Estonia

    只有一个名为 Kesklinn 的地方是塔林市的一部分

    https://www.google.com/maps/place/Kesklinn,+Tallinn,+Estonia/@59.4827351,24.6316448,11z/data=!3m1!4b1!4m5!3m4!1s0x469294b4763fb4c7:0x500b36d18fc70f0!8m2!3d59.4268518!4d24.7595564

    这表明地址“Suur Ra​​nnavärav 1, Kesklinna, Estonia”已损坏。

    https://www.google.com/maps/place/Suur+Rannav%C3%A4rav+1,+Kesklinn,+Kesklinna,+10414+Harju+maakond,+Estonia/@59.4435038,24.7454318,17z/data=!3m1!4b1!4m5!3m4!1s0x46929364f1572a67:0x998f646719ef7e67!8m2!3d59.4435038!4d24.7476205

    您可以使用地图右下角的发送反馈链接向 Google 报告不良数据。

    作为一种解决方法,您可以使用带有地址坐标和结果类型位置的反向地理编码

    https://maps.googleapis.com/maps/api/geocode/json?latlng=59.44350379999999%2C24.7476205&result_type=locality&key=YOUR_API_KEY

    这将按预期返回“爱沙尼亚塔林”。

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-25
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      相关资源
      最近更新 更多