方法一︰透過單擊地圖取得經緯度
var myMap = new GMap2(document.getElementById( "my_map")); var myLatLng = new GLatLng(25.0476 3902653048, 121.51715755462 646); myMap.setCenter (myLatLng, 15); myMap.addContro l(new GLargeMapContro l()); document.getEle mentById('inLat Lng').value = myLatLng.toStri ng(); var myMarker = new GMarker( myLatLng ); myMap.addOverla y( myMarker ); GEvent.addListe ner(myMap, "click", function( overlay, point ){ if(point){ //設定標註座標 myMarker.setLat Lng(point); document.getEle mentById('inLat Lng').value = point.toString( ); } });
LatLng︰在上個單元『在地圖上新增標註』
方法二︰透過地址輸入取得經緯度
var myMap; var myMarker function load() { if (GBrowserIsCompatible()) { myMap = new GMap2(document. getElementById( "my_map")); var myLatLng = new GLatLng(25.0476 3902653048, 121.51715755462 646); myMap.setCenter (myLatLng, 15); myMap.addContro l(new GLargeMapContro l()); document.getEle mentById('inLat Lng').value = myLatLng.toStri ng(); myMarker = new GMarker( myLatLng ); myMap.addOverla y( myMarker ); } } function addressGps() { var myGeocoder = new GClientGeocoder (); var address = document.getEle mentById('addre ss').value; myGeocoder.getL atLng(address, function getRequest( point ){ if(!point){ alert('這個地址 Google 說不知道!'); }else{ //移動地圖中心點 myMap.panTo( point ); //設定標註座標 myMarker.setLat Lng(point); document.getEle mentById('inLat Lng').value = point.toString( ); } }); }
Address︰ LatLng︰這裡要介紹一個新的物件 GClientGeocoder
補充︰透過經緯度座標取得地址
使用方法與透過地址輸入取得經緯
var myMap; var myMarker function load() { if (GBrowserIsCompatible()) { myMap = new GMap2(document. getElementById( "my_map")); var myLatLng = new GLatLng(25.0476 3902653048, 121.51715755462 646); myMap.setCenter (myLatLng, 15); myMap.addContro l(new GLargeMapContro l()); myMarker = new GMarker( myLatLng ); myMap.addOverla y( myMarker ); } } function getAddress() { var strLatLng = document.getEle mentById('latln g').value; strLatLng = strLatLng.repla ce("(", "["); strLatLng = strLatLng.repla ce(")", "]"); var arrLatLng = eval(strLatLng) ; var myLatLng = new GLatLng(arrLatL ng[0], arrLatLng[1]); //移動地圖中心點 myMap.panTo( myLatLng ); //設定標註座標 myMarker.setLat Lng( myLatLng ); var myGeocoder = new GClientGeocoder (); myGeocoder.getL ocations(myLatL ng, function(addres ses) { if(addresses.St atus.code != 200) { alert("此座標沒有找到對 應的地址 " + myLatLng.toUrlV alue()); } else { var result = addresses.Place mark[0]; myMarker.openIn foWindowHtml( result.address ); document.getEle mentById('addre ss').value = result.address; } }); }
LatLng︰ Address︰不過所查詢出來的地址還是有點出
參考︰
‧Ian 懶惰蟲筆記 http://ianjung1
‧class GMap2︰事件 click、panTo(cen
‧class GEvent︰addListe
‧class GMarker︰setLatL
‧class GClientGeocoder
0 意見:
張貼留言