簡體   English   中英

Google地理編碼-如何使用REST API從經緯度獲取參考或ID

[英]Google geocoding - how to get reference or id from lat,lng using REST api

我已經為此努力了好幾天...我正在使用Node.js對Google Maps REST API進行http調用,我需要遍歷數據庫中位置的記錄,並使用lat,lng-找到給定分辨率的Google位置ID或參考-例如說“國家”或“ administrative_level_1” ...

我發現這兩個剩余呼叫最接近我需要的呼叫:

https://maps.googleapis.com/maps/api/geocode/json?
latlng=47.333333,13.333333
&sensor=false
&key=YOUR_API_KEY
&result_type=administrative_area_level_1 

此調用接受lat,lng和所需的分辨率,並返回准確的結果,但沒有id或引用...這是結果json:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Salzburg",
               "short_name" : "Sbg.",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Austria",
               "short_name" : "AT",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Salzburg, Austria",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 48.04121,
                  "lng" : 13.9965099
               },
               "southwest" : {
                  "lat" : 46.94347,
                  "lng" : 12.07669
               }
            },
            "location" : {
               "lat" : 47.80949,
               "lng" : 13.05501
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 48.04121,
                  "lng" : 13.9965099
               },
               "southwest" : {
                  "lat" : 46.94347,
                  "lng" : 12.07669
               }
            }
         },
         "types" : [ "administrative_area_level_1", "political" ]
      }
   ],
   "status" : "OK"
}

到目前為止,我唯一的其他選擇是使用自動完成的REST API,如下所示:

https://maps.googleapis.com/maps/api/place/autocomplete/xml?
key=YOUR_API_KEY
&location=47.333333,13.333333
&sensor=false
&language=en
&types=(regions)
&input=Austria

這個問題在於,由於它是用於自動完成功能,因此需要傳遞“ input”參數,而不僅僅是lat,lng,這對我來說更好。 最好是因為我要處理的位置使用多種語言,並且為每條記錄指定其語言將是一場噩夢。

這是上一個調用的結果json:我需要對預測對象進行迭代,並以我正在尋找的分辨率找到了這些對象...

{
   "predictions" : [
      {
         "description" : "Austria",
         "id" : "e16f8e9f2a60f60a0881c41488ff3869e4f938a4",
         "matched_substrings" : [
            {
               "length" : 7,
               "offset" : 0
            }
         ],
         "reference" : "CiQfAAAAF11VDI_p7OWWL8woW8cOfCDDeA0iE-NMQwQsbQhouSASECau8aTrkIVsiUcGrmnNHhwaFEmcUvCjjjsHRDznswqC_xeOYiBR",
         "terms" : [
            {
               "offset" : 0,
               "value" : "Austria"
            }
         ],
         "types" : [ "country", "political", "geocode" ]
      },
      {
         "description" : "Lower Austria, Austria",
         "id" : "03ea5cab0b5abe4cb16f66e9a42c27d040ce2b3c",
         "matched_substrings" : [
            {
               "length" : 7,
               "offset" : 6
            }
         ],
         "reference" : "CjQuAAAAznpNXppnhg3bl-36bfMr4tsQa3ZjJJWmtUuHIEzEy4RL9M_LeSGc8muP-_h_e89gEhCFjfuwyex9OA36skw8bD45GhQ14NncFQk-AHOILKC4IqEPe-XqDw",
         "terms" : [
            {
               "offset" : 0,
               "value" : "Lower Austria"
            },
            {
               "offset" : 15,
               "value" : "Austria"
            }
         ],
         "types" : [ "administrative_area_level_1", "political", "geocode" ]
      },
      {
         "description" : "Vienna, Austria",
         "id" : "f622c175d668fbf75e7488ddf7b1a04ecb667788",
         "matched_substrings" : [
            {
               "length" : 6,
               "offset" : 0
            }
         ],
         "reference" : "CjQnAAAAD88YSerev6ZNhRw6hI0P9g_Brsjzc_qN5PqKtugj7GXIMbhqKK1qvJXYprMFu67mEhDYSzeYQwEQFjnOxjb3SsxAGhTocUQpKtR1CoM7sYJJROGImDMQzQ",
         "terms" : [
            {
               "offset" : 0,
               "value" : "Vienna"
            },
            {
               "offset" : 8,
               "value" : "Austria"
            }
         ],
         "types" : [ "locality", "political", "geocode" ]
      },
      {
         "description" : "Oberosterreich, Austria",
         "id" : "5ecb86bf53005b6cd7499f660e2312089a955ced",
         "matched_substrings" : [
            {
               "length" : 14,
               "offset" : 0
            }
         ],
         "reference" : "CjQvAAAAgtYVlhBFCDPBgcJu_7CXHJ8ncd3m6IozPSg3YzaLL4kXVtQowpjx4kc2K-Tqm_0YEhCn4rEiM0MaChwBhkki0qu_GhRgpGKjjh4Hq4aN2n9jFjdfc-Xl8Q",
         "terms" : [
            {
               "offset" : 0,
               "value" : "Oberosterreich"
            },
            {
               "offset" : 16,
               "value" : "Austria"
            }
         ],
         "types" : [ "administrative_area_level_1", "political", "geocode" ]
      },
      {
         "description" : "Austrian District, Gyumri, Shirak, Armenia",
         "id" : "3948451df8a40142c1adeeeb4a969dc1c7d82d39",
         "matched_substrings" : [
            {
               "length" : 7,
               "offset" : 0
            }
         ],
         "reference" : "ClRCAAAANrMT8rQH819b7rtJiCbaq0XbDip8VuQCO7EvoIkVmg4xUyQtxGiFhm9sF52hTbtp8PjR-b0_dCLn-ZXceYfJJ64j1hwxbuthSHomBoGBphMSEPC8ZwPtn6dOrYb_duar-tcaFIFbhTX9HWS4UDzF2exZcw2YUh9o",
         "terms" : [
            {
               "offset" : 0,
               "value" : "Austrian District"
            },
            {
               "offset" : 19,
               "value" : "Gyumri"
            },
            {
               "offset" : 27,
               "value" : "Shirak"
            },
            {
               "offset" : 35,
               "value" : "Armenia"
            }
         ],
         "types" : [ "sublocality", "political", "geocode" ]
      }
   ],
   "status" : "OK"
}

原始數據來自我們使用的地理名稱數據庫。 我們將在應用程序的所有部分中切換使用google maps API,因此我只需要使用lat,lng和resolution將它們轉換為google location ID ...名稱是我無法控制的,因為它們是給定的。 並以多種語言...

如果您能指出一個能夠做到這一點的REST API調用或對此事的一系列HTTP調用,我將不勝感激。

欣賞它。 半開

根據Google網站上的API選擇器 ,我建議使用以下API:

將地理位置的緯度/經度坐標轉換為地址(反向地理編碼)。
Google Places API (網絡服務)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM