Google Maps API - 地理編碼服務( 地址定位)

文章推薦指數: 80 %
投票人數:10人

啟用後,在資訊主頁最下方的API 就會看到Google Maps Geocoding API 的訊息, 依據Google API 標準方案,免費版本一天可以呼叫這個API 2500 次,每秒可以50 次,對於 ... ARCHIVE ABOUT CONTACT Designthinkingiseverywhere GoogleMapsAPI-地理編碼服務(地址定位) 一開始使用地圖,總會用經緯度來標記位置,但經緯度往往不夠直覺,而且要知道某個地點的經緯度也是個問題,所以這時就必須使用GoogleMapsAPI的地理編碼服務來實現「地址定位」,只要輸入對應的地址,就可以在地圖上標記。

啟用GoogleMapsGeocodingAPI 要使用地理編碼服務,首先要前往GoogleAPIConsole,進入之後,建立新的專案或是選擇現有的專案(不知道怎麼做可以參考GoogleMaps(1)-網頁載入地圖(起手式)),接著點選上方「啟用API和服務」。

在搜尋欄位搜尋「GoogleMapsGeocodingAPI」,找到後點選並且啟用。

啟用後,在資訊主頁最下方的API就會看到GoogleMapsGeocodingAPI的訊息, 依據GoogleAPI標準方案,免費版本一天可以呼叫這個API2500次,每秒可以50次,對於自己要練習或是簡單的程式,應該都相當夠用。

使用地址定位 要使用地址定位,第一步要先透過google.maps.Geocoder物件存取程式碼內的GoogleMapsAPI地理編碼服務,而Geocoder.geocode()方法會初始化對地理編碼服務的要求。

geocoder=newgoogle.maps.Geocoder(); 接著使用geocoder.geocode({'address':address},callback(results,status))對地址進行地理編碼,在擷取到地理編碼時會依序傳遞兩個參數results和status,results包含以下的結果物件,而最常使用的應該就是geometry.location,因為這回傳的就是地圖常用的經緯度LatLng。

results[]:{ types[]:string, formatted_address:string, address_components[]:{ short_name:string, long_name:string, postcode_localities[]:string, types[]:string }, partial_match:boolean, place_id:string, postcode_localities[]:string, geometry:{ location:LatLng, location_type:GeocoderLocationType viewport:LatLngBounds, bounds:LatLngBounds } } 然而status回傳的是成功與否的狀態,如果回傳OK表示順利剖析地址並且已至少傳回一個地理編碼,以下面的範例來說,就可以透過地址編碼,將地圖標記放在「總統府」的地址上。

範例:使用地址定位 varmap,geocoder; functioninitMap(){ geocoder=newgoogle.maps.Geocoder(); map=newgoogle.maps.Map(document.getElementById('map'),{ zoom:17 }); varaddress='總統府'; geocoder.geocode({'address':address},function(results,status){ if(status=='OK'){ map.setCenter(results[0].geometry.location); varmarker=newgoogle.maps.Marker({ map:map, position:results[0].geometry.location }); }else{ console.log(status); } }); } 簡單的查詢地址功能 如果已經會使用地址定位,就可以來透過HTML的input和button做點變化,下面的例子在網頁中放入一個輸入欄位,輸入地址之後按下定位,就可以將自己指定的地址在地圖上置中,並放上標記。

範例:使用地址定位 submitBtn.on('click',function(){ console.log(addressInput.val()); geocoder.geocode({ 'address':addressInput.val() },function(results,status){ if(status=='OK'){ map.setCenter(results[0].geometry.location); varmarker=newgoogle.maps.Marker({ map:map, position:results[0].geometry.location }); }else{ console.log(status); } }); }); 參考資料 地理編碼服務是參考Google官方文件地理編碼服務,如果想要了解results回傳的參數細節用法就可以前往閱讀,文件的後半段也提到一些地址反查的功能,不過目前還沒想到該怎麼用,就等有用到的時候再寫篇文章記錄一下好了。

BackHome ArticleList ShareonFacebook ShareonGoogle+ ShareonTwitter BacktoTop 有興趣瞧瞧其他新文章嗎? 前一篇文章: 下一篇文章: 您可以閱讀其他相關文章,或瀏覽所有文章 Copyright2019|AllRightsReserved.DesignedbyOXXO.STUDIO



請為這篇文章評分?