【问题标题】:Get Area Name from Street Address in Google Maps从谷歌地图中的街道地址获取区域名称
【发布时间】:2016-08-12 14:09:30
【问题描述】:

我正在开发一个网站,在该网站上绘制某个区域的统计数据并将其显示在 Google 地图上。

如果您在 Google 地图上搜索“美国纽约州哈莱姆区”或“美国纽约州布朗克斯大学高地”,它会为整个区域设置阴影。我将展示这个区域,并找出一种方法来显示带有统计数据的标记。

但是,鉴于用户将输入诸如“500 W 133rd St, New York, NY 10027, USA”之类的地址,是否可以使用某些 Google Map API 或其他东西从提到的街道地址?

【问题讨论】:

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


    【解决方案1】:

    您可以使用Google Maps Geocoding API (为了使用它,你需要一个Gecoding API key

    对于您的示例“500 W 133rd St, New York, NY 10027, USA”,您可以通过以下方式调用 API: https://maps.googleapis.com/maps/api/geocode/json?address=500%20W%20133rd%20St,%20New%20York,%20NY%2010027,%20USA

    如果您提供正确的密钥,您应该会得到以下 JSON:

    {
       "results" : [
          {
             "address_components" : [
                {
                   "long_name" : "500",
                   "short_name" : "500",
                   "types" : [ "street_number" ]
                },
                {
                   "long_name" : "West 133rd Street",
                   "short_name" : "W 133rd St",
                   "types" : [ "route" ]
                },
                {
                   "long_name" : "Upper Manhattan",
                   "short_name" : "Upper Manhattan",
                   "types" : [ "neighborhood", "political" ]
                },
                {
                   "long_name" : "Manhattan",
                   "short_name" : "Manhattan",
                   "types" : [ "sublocality_level_1", "sublocality", "political" ]
                },
                {
                   "long_name" : "New York",
                   "short_name" : "New York",
                   "types" : [ "locality", "political" ]
                },
                {
                   "long_name" : "New York County",
                   "short_name" : "New York County",
                   "types" : [ "administrative_area_level_2", "political" ]
                },
                {
                   "long_name" : "New York",
                   "short_name" : "NY",
                   "types" : [ "administrative_area_level_1", "political" ]
                },
                {
                   "long_name" : "Stany Zjednoczone",
                   "short_name" : "US",
                   "types" : [ "country", "political" ]
                },
                {
                   "long_name" : "10027",
                   "short_name" : "10027",
                   "types" : [ "postal_code" ]
                },
                {
                   "long_name" : "7302",
                   "short_name" : "7302",
                   "types" : [ "postal_code_suffix" ]
                }
             ],
             "formatted_address" : "500 W 133rd St, New York, NY 10027, Stany Zjednoczone",
             "geometry" : {
                "bounds" : {
                   "northeast" : {
                      "lat" : 40.8176249,
                      "lng" : -73.9532346
                   },
                   "southwest" : {
                      "lat" : 40.8176127,
                      "lng" : -73.9532442
                   }
                },
                "location" : {
                   "lat" : 40.8176127,
                   "lng" : -73.9532442
                },
                "location_type" : "RANGE_INTERPOLATED",
                "viewport" : {
                   "northeast" : {
                      "lat" : 40.81896778029149,
                      "lng" : -73.9518904197085
                   },
                   "southwest" : {
                      "lat" : 40.81626981970849,
                      "lng" : -73.95458838029151
                   }
                }
             },
             "place_id" : "Eic1MDAgVyAxMzNyZCBTdCwgTmV3IFlvcmssIE5ZIDEwMDI3LCBVU0E",
             "types" : [ "street_address" ]
          }
       ],
       "status" : "OK"
    }
    

    您可以过滤掉 neighborhoodsublocality_level_1postal_code 类型并获取相关的 long_name 以搜索多边形。

    【讨论】:

    • 我之前尝试过上面的,但没有使用它,原因有以下两个。 1)它不返回哈林区,您可以直观地看到地图上的区域。 2)当我尝试了其他几个地址时,它返回 sublocality_level_2 作为较窄/较小的区域,但在像你这样的情况下,只提到了 sublocality_level_1,但确实有邻域。知道这是怎么回事吗?
    • 我认为哈林区只是一个多边形空间对象,而不是区域结构的一部分(如果我们询问哈林区,我们会得到曼哈顿作为最准确的区域):maps.googleapis.com/maps/api/geocode/…
    • 另一个想法是您尝试 Nominatim(OpenStreetMap 上的服务),采用类似的两步方法:发现 id:nominatim.openstreetmap.org/… 使用 id 获取详细信息:nominatim.openstreetmap.org/details.php?place_id=1672811647 虽然您仍然没有至少使用 Nominatim 在结构中获取 Harlem,您将从 OpenStreetMap 中获取对象的 ID,因此应用程序的下一步应该更容易
    • 实际上,我需要用户发现哈莱姆区,但现在,我展示的是曼哈顿上城。下一步是让他们滚动并缩放我嵌入的地图,我将在他们当前的视图周围绘制一个基本的矩形阴影区域。我接受这个,你看看你是否也能回答这个问题:stackoverflow.com/questions/36780433/…
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 2015-08-19
    • 2012-04-27
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多