首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Google的placeId的层次化和转换结果

使用Google的placeId的层次化和转换结果
EN

Stack Overflow用户
提问于 2018-03-31 16:48:43
回答 1查看 617关注 0票数 0

我正在使用Google place搜索一个地方(也许我需要Google来实现我想要的目标):

代码语言:javascript
复制
https://maps.googleapis.com/maps/api/place/details/json?placeid=Eh9SdWUgU3RhbmlzbGFzLCBDb2xtYXIsINem16jXpNeq&language=hi&key=myKey

响应:

代码语言:javascript
复制
{
   "html_attributions" : [],
   "result" : {
      "address_components" : [
         {
            "long_name" : "Rue Stanislas",
            "short_name" : "Rue Stanislas",
            "types" : [ "route" ]
         },
         {
            "long_name" : "Colmar",
            "short_name" : "Colmar",
            "types" : [ "locality", "political" ]
         },
         {
            "long_name" : "Haut-Rhin",
            "short_name" : "Haut-Rhin",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "Grand Est",
            "short_name" : "Grand Est",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "फ़्रांस",
            "short_name" : "FR",
            "types" : [ "country", "political" ]
         },
         {
            "long_name" : "68000",
            "short_name" : "68000",
            "types" : [ "postal_code" ]
         }
      ],
      "adr_address" : "\u003cspan class=\"street-address\"\u003eRue Stanislas\u003c/span\u003e, \u003cspan class=\"postal-code\"\u003e68000\u003c/span\u003e \u003cspan class=\"locality\"\u003eColmar\u003c/span\u003e, \u003cspan class=\"country-name\"\u003eFrance\u003c/span\u003e",
      "formatted_address" : "Rue Stanislas, 68000 Colmar, France",
      "geometry" : {
         "location" : {
            "lat" : 48.0799554,
            "lng" : 7.3526162
         },
         "viewport" : {
            "northeast" : {
               "lat" : 48.0813043802915,
               "lng" : 7.353965180291502
            },
            "southwest" : {
               "lat" : 48.0786064197085,
               "lng" : 7.351267219708498
            }
         }
      },
      "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
      "id" : "e5f239bd54d6e0156e898767330506c2e45735a5",
      "name" : "Rue Stanislas",
      "place_id" : "ChIJn4hibt5lkUcRrCcB7Govsis",
      "reference" : "CmRbAAAAygsTgSHpHE4OFcumAyXCPTWOY9qepgdVPY0_CI72WMFxhSQsGZ6bgEUyDr7i8lAbiEYjFD4QQC4v-M2LfFZKmRiq8IpBnxCkUqf0kUN2cE8I68Fb6o7eAit2N_33jLBWEhBBalp6JYpcV78RkMWeAGrvGhToTkaPAXWlULgE8fOuVtkx5hf_6g",
      "scope" : "GOOGLE",
      "types" : [ "route" ],
      "url" : "https://maps.google.com/?q=Rue+Stanislas,+68000+Colmar,+France&ftid=0x479165de6e62889f:0x2bb22f6aec0127ac",
      "utc_offset" : 120,
      "vicinity" : "Colmar"
   },
   "status" : "OK"
}

我在这个响应中有几个问题: 1.我需要每个地方的ids:locality, administrative_area_level_2, administrative_area_level_1。为了得到它们,我还需要再发送3个请求到google places吗?如果我必须--我如何才能在不使用id的情况下得到特定位置的精确结果(如果我必须使用text-searchHaut-Rhin,我可能还能得到一些结果)?

  1. 即使是在发送language=hi的时候,我也只翻译了这个国家。
  2. Colmar也属于Alsace区域,在任何地方都没有提到。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-01 17:23:41

你的问题似乎有点宽泛,但我会设法消除你的疑虑。

  1. 您是对的,响应中的address组件目前没有公开每个组件的place,因此您必须执行额外的请求才能获得address组件的place。

请注意,在Google问题跟踪器中,有一个功能请求在响应中添加每个地址组件的位置ID。

https://issuetracker.google.com/issues/35827596

请随时按此功能请求添加您的选票并订阅进一步的通知。

同时,您可以执行对您所在位置的坐标的反向地理编码请求,以获取位置is、管理区域1和管理区域2。在您的示例中,这个位置的坐标是48.0799554,7.3526162。让我们创建反向地理编码请求,以获取有关地区和管理区域的信息:

https://maps.googleapis.com/maps/api/geocode/json?latlng=48.0799554%2C7.3526162&result_type=administrative_area_level_1%7Cadministrative_area_level_2%7Clocality&key=YOUR_API_KEY

此请求将返回

  • 具有位置ID ChIJz8Fw9t9lkUcRZulsYT5-XeM的地方Colmar
  • 带有位置ID ChIJ919PNUx_kUcRwCk3mrlfCgM的管理区域2 Haut
  • 行政区域1大Est与地点ID ChIJsbWPxd9VkUcR_RfRz30ZyLk

  1. 关于应用语言参数language=hi,请注意,对于街道地址级别的结果,街道和地区的名称总是以本地语言返回。下面的博客文章解释了这种行为。

https://maps-apis.googleblog.com/2014/11/localization-of-street-addresses-in.html

3.关于阿尔萨斯地区。请注意,地理编码服务只返回与地址格式相关的地址组件。在您的示例中,Alsace不构成格式化地址Rue Stanislas, 68000 Colmar, France的一部分,因此在address components数组中省略了它。

我可以看到Google数据库中的Alsace有一个colloquial_area类型。

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3DAlsace%26options%3Dtrue%26country%3DFR

但是,您在问题中提到的地址无法将其作为地址组件。

我希望我的回答能消除你的疑虑。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49590171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档