2011-05-22 36 views
0

這裏是我的谷歌地圖API項目:如何從地圖獲取所有座標?

<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var rio = new google.maps.LatLng(-22.894125,-43.199358); 
    var map; 

    function initialize() { 
    var myOptions = { 
     zoom: 10, 
     center: rio, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    google.maps.event.addListener(marker, 'click', toggleBounce); 
    } 

    function addMarkerAtCenter() { 
    var marker = new google.maps.Marker({ 
     position: map.getCenter(), 
     draggable:true, 
     animation: google.maps.Animation.DROP, 
     map: map 
    }); 
    } 

    function toggleBounce() { 

    if (marker.getAnimation() != null) { 
     marker.setAnimation(null); 
    } else { 
     marker.setAnimation(google.maps.Animation.BOUNCE); 
    } 
    } 
</script> 
</head> 
<body onload="initialize()" style="margin:0px; padding:0px;"> 
    <center><input type="button" value="Adicionar Marcador" onclick="addMarkerAtCenter()"/></center> 
    <center><div id="map_canvas" style="width:100%; height:100%"></div></center> 
</body> 

哪能,添加多個標記之後,讓他們和保存爲XML?

謝謝

回答

0

我非常確定它不會那樣工作。標記知道他們屬於哪個地圖,但不是相反。你通常會這樣做的方式是創建一個數組,並且每次向地圖中添加一個標記時,都會將其添加到數組中。每當你想操縱你的標記,然後通過該陣列運行,並做需要做的東西:)

0

你可能後(如果你輸出東西到XML)只是添加每個標記的座標,而不是下面的整個谷歌標記對象是如何獲取座標並將它們序列化(嚴重)爲XML的示例。

<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var rio = new google.maps.LatLng(-22.894125,-43.199358); 
    var map; 

//you probably just want to store coordinates of markers 
var coords = [] 

    function initialize() { 
    var myOptions = { 
     zoom: 10, 
     center: rio, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    // google.maps.event.addListener(marker, 'click', toggleBounce); 
    } 

    function addMarkerAtCenter() { 
    var marker = new google.maps.Marker({ 
     position: map.getCenter(), 
     draggable:true, 
     animation: google.maps.Animation.DROP, 
     map: map 
    }); 

    //get the coordinates of the marker 
    pos = marker.getPosition(); 
    //save the coordinates 
    coords.push({lat:pos.lat(), lng:pos.lng()}) 
    } 


    function toggleBounce() { 

    if (marker.getAnimation() != null) { 
     marker.setAnimation(null); 
    } else { 
     marker.setAnimation(google.maps.Animation.BOUNCE); 
    } 
    } 
    //a primitive serialize function - add something more sophisticated 
function serialize(arr) { 
xml = "<markers>"; 
for (i=0;i<arr.length;i++) { 
xml += "<marker>"; 
for(var prop in arr[i]) { 
    if(arr[i].hasOwnProperty(prop)) 
     xml += "<" + prop +">" + arr[i][prop] + "</" + prop +">"; 
} 
xml += "</marker>"; 
} 


xml +="</markers>"; 
//do something with the result 
alert(xml); 
} 
</script> 
</head> 
<body onload="initialize()" style="margin:0px; padding:0px;"> 
    <center><input type="button" value="Adicionar Marcador" onclick="addMarkerAtCenter()"/> <input type=button onClick="javascript:serialize(coords)" value="To XML"></center> 
    <center><div id="map_canvas" style="width:100%; height:100%"></div></center> 

</body>