摘要:地理編碼響應地理編碼響應以請求路徑中標志指示的格式返回。表示地理編碼成功,但未返回任何結果。通常,這種類型表示某個民政管理部門的多邊形表示國家政治實體,通常是由地理編碼器返回的最高級別類型表示國家地區級別以下的一級行政實體。
大部分項目還是都有要獲取當前點擊的坐標經緯度或者獲取當前街道的信息的,然而谷歌API 的文檔也并不是很直觀。
官網地理編碼服務地址:https://developers.google.com...
在服務欄里的地理編碼里,為什么說是服務呢,用谷歌翻譯了下,發現想獲取坐標以及街道詳情,需要調用谷歌的地理編碼接口(不是完全免費的哦),所以,算是谷歌的接口服務吧。然后人家就來了個限制政策,如下:
使用地理編碼服務的標準
每天2500免費請求,客戶端和的總和來計算服務器端的 查詢; 啟用結算進入更高的每日配額,以$ 0.50計費美元/ 1000其他要求,達10萬每天的請求。
每秒50個請求,作為客戶端和的總和來計算服務器端 的查詢。
然而這個服務看了好久,也沒看出怎么請求,于是乎,又不停的找谷歌api,找了好久,終于不負有心人,讓勞資給找到了這個Google Maps Geocoding API 地址:https://developers.google.com...
下面進入正文。其實下面的都是從谷歌API copy 過來的,不要吐槽我,一點一點的粘貼復制整理也好累的 >_<
什么是地理編碼?地理編碼是將地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)轉換為地理坐標(如緯度 37.423021 和經度 -122.083739)的過程,您可以借此在地圖上放置標記,或在地圖上定位。
反向地理編碼是將地理坐標轉換為可人工讀取的地址的過程。Google Maps Geocoding API 的反向地理編碼服務還可讓您找到對應于給定的地點 ID 的地址。
Google Maps Geocoding API 請求格式Google Maps Geocoding API 請求必須采用以下形式:
https://maps.googleapis.com/maps/api/geocode/output?parameters
其中,output 可以是以下值之一:
json(推薦)指示以 JavaScript 對象標記 (JSON) 輸出
xml 指示以 XML 格式輸出
如需通過 HTTP 訪問 Google Maps Geocoding API,請使用:http://maps.googleapis.com/maps/api/geocode/output?parameters
對于請求中包含敏感用戶數據(例如用戶的位置)的應用,不建議使用 HTTP。
有些參數是必填的,而有些是可選的。依照 URL 的標準,參數都使用“與”字符 (&) 分隔。
因為每種請求類型使用的參數不同,所以本頁面的其余部分分別介紹了地理編碼和反向地理編碼。
地理編碼請求中的必填參數:
address- 要進行地理編碼的街道地址,采用相關國家/地區的全國郵政服務所使用的格式。應避免其他地址元素,例如企業名稱以及單元號、套房號或樓層。
或
components - 您希望獲得其地理編碼的組成部分過濾器。如果提供了 address,還將接受組成部分過濾器作為可選參數。
key – 您的應用的 API 密鑰。此密鑰可以標識您的應用,以便進行配額管理。
地理編碼請求中的可選參數:
bounds – 視口的邊框,在其中可以使地理編碼結果更顯著地發生偏向。此參數只會影響,而不會完全限制地理編碼器中的結果。
language – 返回結果時使用的語言。請注意,我們會經常更新支持的語言,因此,此列表可能并不全面。如果未提供 language,地理編碼器將盡可能嘗試使用發送請求區域的當地語言。
region – 地區代碼,指定為一個 ccTLD(“頂級域名”)雙字符值。此參數只會影響,而不會完全限制地理編碼器中的結果。
components – 組成部分過濾器,用管道符號 (|) 分隔。每個組成部分過濾器由一個 component:value 對組成,將完全限制地理編碼器中的結果。
地理編碼響應地理編碼響應以 URL 請求路徑中 output 標志指示的格式返回。
在此示例中,Google Maps Geocoding API 請求針對“1600 Amphitheatre Parkway, Mountain View, CA”查詢的 json 響應。
此請求演示了如何使用 JSON output 標志:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
此請求演示了如何使用 XML output 標志:
https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
在此只演示下Json響應結果實例:
{ "results" : [ { "address_components" : [ { "long_name" : "1600", "short_name" : "1600", "types" : [ "street_number" ] }, { "long_name" : "Amphitheatre Pkwy", "short_name" : "Amphitheatre Pkwy", "types" : [ "route" ] }, { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, { "long_name" : "Santa Clara County", "short_name" : "Santa Clara County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "California", "short_name" : "CA", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "94043", "short_name" : "94043", "types" : [ "postal_code" ] } ], "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA", "geometry" : { "location" : { "lat" : 37.4224764, "lng" : -122.0842499 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 37.4238253802915, "lng" : -122.0829009197085 }, "southwest" : { "lat" : 37.4211274197085, "lng" : -122.0855988802915 } } }, "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", "types" : [ "street_address" ] } ], "status" : "OK" }
請注意,JSON 響應包含兩個根元素:
"status" 包含請求的元數據。請參閱下面的狀態代碼。
"results" 包含一個有關地理編碼地址信息和幾何信息的數組。
狀態代碼地理編碼響應對象中的 "status" 字段包含了請求的狀態,還可能包含調試信息,以幫助您查明地理編碼不工作的原因。"status" 字段可以包含以下值:
"OK" 表示未出現任何錯誤;已成功解析地址,并且至少返回了一個地理編碼。
"ZERO_RESULTS" 表示地理編碼成功,但未返回任何結果。如果向地理編碼器傳遞了一個不存在 address,就可能會發生這種情況。
"OVER_QUERY_LIMIT" 表示您已超出配額。
"REQUEST_DENIED" 表示系統已拒絕您的請求。
"INVALID_REQUEST" 一般表示缺少查詢(address、components 或 latlng)。
"UNKNOWN_ERROR" 表示由于服務器發生錯誤,因此無法處理該請求。如果您重試一次,請求可能會成功
結果當地理編碼器返回結果時,會將這些結果放在一個 (JSON) results 數組中。即使地理編碼器沒有返回任何結果(例如,如果地址不存在),它仍然會返回一個空的 results 數組。(XML 響應包含零個或更多個
典型的結果由以下字段組成:
types[]數組表示返回結果的類型。此數組包含一組標記(可能為零個或多個),用于標識結果中所返回特征的類型。例如,“芝加哥”的地理編碼返回“locality”,這表明“芝加哥”是一個城市,并且還返回“political”,這表明它是一個政治實體。
formatted_address:是一個包含此位置可人工讀取的地址的字符串。通常此地址相當于“郵政地址”,有時會因國家/地區而異。(請注意,由于許可限制,某些國家(如英國)不允許發布真實的郵政地址。)此地址通常由一個或多個地址組成部分組成。例如,地址“111 8th Avenue, New York, NY”包含以下地址組成部分:“111”(街道號)、“8th Avenue”(道路)、“New York”(城市)和“NY”(美國的一個州)。這些地址組成部分包含如下所述的附加信息。
address_components[] 是包含獨立的地址組成部分的數組,如上所述。通常,每個 address_component均包含:
`types[]`,一個表示地址組成部分類型的數組。 `long_name` 是地理編碼器返回的地址組成部分的完整文本說明或名稱。 `short_name` 是地址組成部分的文本名稱縮寫(如有)。例如,Alaska 州的地址組成部分可以有 long_name“Alaska”和 short_name“AK”(使用雙字母郵政縮寫表示)。
請注意,address_components[] 中包含的地址組成部分可能比 formatted_address 中記錄的更多。
postcode_localities[] 是一個數組,表示一個郵政編碼中包含的所有地方。只有當結果是一個包含多個地方的郵政編碼時,才會有此數組。
geometry 包含以下信息:
location:其中包含地理編碼經度、緯度值。對于普通的地址查找,此字段通常是最重要的。
location_type 存儲有關指定位置的附加數據。目前支持以下值:
"ROOFTOP" 表示返回的結果是一個精確的地理編碼,我們使其位置信息精確到街道地址的精度。 "RANGE_INTERPOLATED" 表示返回的結果反映了兩個精確點(例如交叉路口)之間用內插法計算得到的近似值(通常在道路上)。當某個街道地址的 rooftop 地理編碼不可用時,通常會返回內插值結果。 "GEOMETRIC_CENTER" 表示返回的結果是某個位置(如多段線(例如街道)或多邊形(地區))的幾何中心。 "APPROXIMATE" 表示返回的結果是近似值。
viewport 包含用于顯示返回結果的推薦視口,指定為兩個緯度、經度值,分別定義視口邊框的 southwest 和 northeast 角。視口通常用來在向用戶顯示結果時為該結果加邊框。
bounds(可選返回)存儲可完全包含返回結果的邊框。請注意,這些邊界可能與推薦的視口不一致。(例如,舊金山包含費拉隆島,理論上它是這個城市的一部分,但可能不應該在視口中返回。)
partial_match 表示雖然地理編碼器能夠匹配所請求的地址的一部分,但它未能返回原始請求的精確匹配項。您不妨檢查一下原始請求中是否有拼寫錯誤和/或地址不完整的情況。
對于請求中所傳遞的行政區劃內不存在的街道地址,最常發生部分匹配的情況。當請求與同一行政區劃中的兩個或更多位置相匹配時,也可能會返回部分匹配。例如,“21 Henr St, Bristol, UK”將返回 Henry Street 和 Henrietta Street 這兩項部分匹配結果。請注意,如果請求中包含拼寫錯誤的地址組成部分,地理編碼服務可能會建議一個備選地址。以這種方式觸發的建議也將標記為部分匹配。
place_id 是唯一一個可以與其他 Google API 結合使用的標識符。例如,您可以在 Google Places API 請求中使用 place_id 獲取當地企業的詳情,如電話號碼、營業時間、用戶評論等。
地址類型和地址組成部分類型結果中的 types[] 數組表示地址類型。地址類型的示例包括街道地址、國家/地區或政治實體。在 address_components[] 中也有一個 types[] 數組,用來表示地址各個部分的類型。示例包括門牌號碼或國家/地區。(以下是類型的完整列表。)地址可能有多種類型。這些類型可能會被視為“標記”。例如,許多城市都標有 political 和 locality 類型。
地理編碼器以地址類型和地址組成部分類型數組這兩種形式支持并返回以下類型:
street_address 表示精確的街道地址。 route:表示已命名的路線(例如“US 101”) intersection:表示主要交叉路口,通常是兩條主要道路的交叉路口 political:表示政治實體。通常,這種類型表示某個民政管理部門的多邊形 country:表示國家政治實體,通常是由地理編碼器返回的最高級別類型 administrative_area_level_1:表示國家/地區級別以下的一級行政實體。在美國,這種行政級別就是州。并非所有國家都設有這類行政級別 administrative_area_level_2:表示國家/地區級別以下的二級行政實體。在美國,這種行政級別就是縣。并非所有國家都設有這類行政級別 administrative_area_level_3:表示國家/地區級別以下的三級行政實體。此類型表示較小的行政區劃單位。并非所有國家都設有這類行政級別 administrative_area_level_4:表示國家/地區級別以下的四級行政實體。此類型表示較小的行政區劃單位。并非所有國家都設有這類行政級別 administrative_area_level_5:表示國家/地區級別以下的五級行政實體。此類型表示較小的行政區劃單位。并非所有國家都設有這類行政級別 colloquial_area:表示實體的常用替代名稱 locality 表示合并的城市或城鎮政治實體。 ward 表示一種特定的日本行政區劃類型,以便于區分某個日本地址中的多個行政區劃組成部分。 sublocality:表示 locality 以下的一級行政實體。某些位置可能會收到其他類型之一:從 sublocality_level_1 到 sublocality_level_5。每個 sublocality 級別都是一個行政實體。數字越大,表示的地理區域越小 neighborhood 表示已命名的街區 premise 表示已命名的位置,通常是具有常見名稱的一棟或一群建筑物 subpremise 表示指定位置以下的一級實體,通常是同名建筑群中的單個建筑物 postal_code 表示郵政編碼,用于國內的地址郵寄。 natural_feature:表示著名的自然景觀 airport:表示機場 park:表示已命名的公園。 point_of_interest 表示已命名的景點。通常,這些“景點”是不容易歸入其他類別的著名地方實體,如“帝國大廈”或“自由女神像”。
除了上述類型之外,地址組成部分還可能包括下列類型。
floor:表示某個建筑物地址的樓層 establishment 通常表示某個尚未歸類的地方。 point_of_interest 表示已命名的景點。 parking 表示停車場或停車設施。 post_box 表示特定的郵政信箱。 postal_town 表示地理區域的分組,如 locality 和 sublocality,在某些國家/地區用于郵寄地址。 room 表示某個建筑物地址的房間。 street_number 表示確切的門牌號碼。 bus_station、train_station 和 transit_station 表示巴士、火車或公交車站的位置。反向地理編碼(地址查找)
術語地理編碼一般是指將可人工讀取的地址轉換為地圖上的某個位置。與之相反,將地圖上的某個位置轉換為可人工讀取的地址的過程,就稱為反向地理編碼。
必填參數:您必須在反向地理編碼請求中提供下列參數之一,但不可同時提供這兩個參數:
要么:latlng – 經緯度值,用于指定希望獲得其最接近的、可人工讀取的地址的位置。
或者:place_id – 您希望獲得其可人工讀取的地址的地方的地點 ID。地點 ID 是唯一一個可以與其他 Google API 結合使用的標識符。例如,您可以使用由 Google Maps Roads API 返回的 placeID 來獲取某個拍攝點的地址。
反向地理編碼請求中的可選參數:
key – 您的應用的 API 密鑰,可從 Google API Console 獲得。此密鑰可以標識您的應用,以便進行配額管理。
language – 返回結果時使用的語言。請參閱支持的區域語言列表。請注意,我們會經常更新支持的語言,因此,此列表可能并不全面。如果未提供 language,地理編碼器將盡可能嘗試使用發送請求區域的當地語言。
result_type – 一個或多個地址類型,用管道符號 (|) 分隔。地址類型的示例:country、street_address、postal_code。如需查看允許值的完整列表,請參閱此頁面上的地址類型。如果指定了一種類型,會將結果限制于這種類型。如果指定了多種類型,該 API 將返回匹配其中任何類型的所有地址。注:此參數僅適用于包括 API 密鑰或客戶端 ID 的請求。
location_type – 一個或多個位置類型,用管道符號 (|) 分隔。如果指定了一種類型,會將結果限制于這種類型。如果指定了多種類型,該 API 將返回匹配其中任何類型的所有地址。注:此參數僅適用于包括 API 密鑰或客戶端 ID 的請求。可支持以下值:
"ROOFTOP" 將結果限制為我們使其位置信息精確到街道地址精度的地址。 "RANGE_INTERPOLATED" 將結果限制為反映了兩個精確點(例如交叉路口)之間用內插法計算得到的近似值(通常在道路上)的地址。內插的范圍通常表示某個街道地址的 rooftop 地理編碼不可用。 "GEOMETRIC_CENTER" 將結果限制為某個位置(如多段線(例如街道)或多邊形(地區))的幾何中心。 "APPROXIMATE" 將結果限制為是近似值的地址。
如果 result_type 和 location_type 限制同時存在,那么該 API 將只返回同時匹配 result_type 和 location_type 限制的結果。
經緯度反向地理編碼以下查詢包含了布魯克林某個位置的緯度/經度值:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
注:確保在將緯度和經度值傳入 latlng 參數時,兩者之間沒有空格。
上述查詢返回以下結果:
{ "results" : [ { "address_components" : [ { "long_name" : "277", "short_name" : "277", "types" : [ "street_number" ] }, { "long_name" : "Bedford Avenue", "short_name" : "Bedford Ave", "types" : [ "route" ] }, { "long_name" : "Williamsburg", "short_name" : "Williamsburg", "types" : [ "neighborhood", "political" ] }, { "long_name" : "Brooklyn", "short_name" : "Brooklyn", "types" : [ "sublocality", "political" ] }, { "long_name" : "Kings", "short_name" : "Kings", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "New York", "short_name" : "NY", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "11211", "short_name" : "11211", "types" : [ "postal_code" ] } ], "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA", "geometry" : { "location" : { "lat" : 40.714232, "lng" : -73.9612889 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 40.7155809802915, "lng" : -73.9599399197085 }, "southwest" : { "lat" : 40.7128830197085, "lng" : -73.96263788029151 } } }, "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA", "types" : [ "street_address" ] }, ... Additional results[] ...
請注意,反向地理編碼器返回了多個結果。"formatted_address" 的結果不僅有郵政地址,還包括對某個位置的任何地理命名方式。例如,對芝加哥市的某個點進行地理編碼時,地理編碼的點可以表示為街道地址、城市(芝加哥)、所在州(伊利諾伊州)或國家/地區(美國)。所有這些都是地理編碼器的“地址”。反向地理編碼器返回這些類型中的任何一種作為有效結果。
反向地理編碼器會匹配政治實體(國家/地區、省、市和街區)、街道地址及郵政編碼。
由以前的查詢返回的 formatted_address 值的完整列表如下所示。
"formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA", "formatted_address" : "Grand St/Bedford Av, Brooklyn, NY 11211, USA", "formatted_address" : "Grand St/Bedford Av, Brooklyn, NY 11249, USA", "formatted_address" : "Bedford Av/Grand St, Brooklyn, NY 11211, USA", "formatted_address" : "Brooklyn, NY 11211, USA", "formatted_address" : "Williamsburg, Brooklyn, NY, USA", "formatted_address" : "Brooklyn, NY, USA", "formatted_address" : "New York, NY, USA", "formatted_address" : "New York, USA", "formatted_address" : "United States",
通常,返回的地址按精確度從最具體到最不具體的順序排列;正如本例中所示,最準確的地址在結果中擺在最突出的位置。請注意,我們會返回不同類型的地址,從最具體的街道地址到不那么具體的政治實體,如街區、市、縣、州等。
地點 ID 的反向地理編碼以下查詢包含了布魯克林某個位置的地點 ID:
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJd8BlQ2BZwokRAFUEcm_qrcA&key=YOUR_API_KEY
接口返回值就不多羅列了,都差不多。
受類型限制的反向地理編碼以下示例將返回的地址限制為位置類型是 ROOFTOP 且地址類型是 street_address 的地址。
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY反向地理編碼響應
反向地理編碼響應的格式與地理編碼響應相同。請參閱地理編碼響應。下面是反向地理編碼響應中可能出現的狀態代碼。
地理編碼響應對象中的 "status" 字段包含了請求的狀態,還可能包含調試信息,以幫助您查明反向地理編碼不工作的原因。"status" 字段可以包含以下值:
"OK" 表示未出現任何錯誤,并且至少返回了一個地址。 "ZERO_RESULTS" 表示反向地理編碼成功,但未返回任何結果。如果向地理編碼器傳遞了某個偏遠位置的 latlng 參數,就可能會發生這種情況。 "OVER_QUERY_LIMIT" 表示您已超出配額。 "REQUEST_DENIED" 表示系統已拒絕該請求。這可能是因為該請求包含了 result_type 或 location_type 參數,但未包含 API 密鑰或客戶端 ID。 "INVALID_REQUEST" 通常表示下列情況之一: 缺少查詢(address、components 或 latlng)。 提供的 result_type 或 location_type 無效。 "UNKNOWN_ERROR" 表示由于服務器發生錯誤,因此無法處理該請求。如果您重試一次,請求可能會成功sensor 參數
Google Maps API 之前要求您將 sensor 參數包括在內,以指示您的應用是否使用傳感器來確定用戶的位置。但該參數現在不再是必填項。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90891.html
摘要:最近參與頁面插入谷歌地圖的項目,因此在此分享下我的學習經驗,第一次寫,請多擔待首先,講下項目的需求,在網頁進行點擊產品列表,渲染對應的地圖信息以及對應的詳情信息,并且修改谷歌固有標簽以及點擊標簽出現,展示詳細信息以及對應的產品。 最近參與頁面插入谷歌地圖API的項目,因此在此分享下我的學習經驗,第一次寫,請多擔待! 首先,講下項目的需求,在網頁進行點擊產品列表,渲染對應的地圖信息以及對...
摘要:最近參與頁面插入谷歌地圖的項目,因此在此分享下我的學習經驗,第一次寫,請多擔待首先,講下項目的需求,在網頁進行點擊產品列表,渲染對應的地圖信息以及對應的詳情信息,并且修改谷歌固有標簽以及點擊標簽出現,展示詳細信息以及對應的產品。 最近參與頁面插入谷歌地圖API的項目,因此在此分享下我的學習經驗,第一次寫,請多擔待! 首先,講下項目的需求,在網頁進行點擊產品列表,渲染對應的地圖信息以及對...
閱讀 2201·2021-11-22 11:56
閱讀 2647·2021-10-08 10:05
閱讀 7772·2021-09-22 15:53
閱讀 1910·2021-09-22 15:29
閱讀 2234·2021-09-08 09:35
閱讀 3354·2021-09-07 10:12
閱讀 1379·2019-08-30 13:11
閱讀 1968·2019-08-28 17:54