2012-04-26 131 views

回答

1

是的,您可以在地圖上繪製多個多邊形;檢查出Drawing Library。如果你想完成一個形狀後顯示一個消息,你將要定義對偵聽幾種可能完成事件通知中的一個DrawingManager偵聽器函數:

google.maps.event.addListener(drawingMgr, 'overlaycomplete', function(event){ 
    var shape = event.overlay; 
    var path = shape.getPath(); //returns an MVCArray of LatLng instances 
    for (var i = 0; i < path.length; i++) { 
     var lat = path.getAt(i).lat(); //Corrected as per MVCArray 
     var lng = path.getAt(i).lng(); //Corrected as per MVCArray 
     //do something with the data... 
    } 
    //put your message display code here 
}); 

在函數回調,您可以訪問剛剛完成的形狀。所以在上面的代碼中,event.overlay將爲您提供對形狀的直接引用。如果我們假設形狀爲Polygon,則可以直接訪問形狀的成員,如上所示。全套Polygon會員記錄在here

+0

謝謝:)這可以幫助我。我怎樣才能得到與你提到的事件監聽器中創建的形狀相關的數據.. Thanx – Seif 2012-04-27 10:42:44

+0

我已經更新了上面的回調函數中的代碼,向您展示瞭如何獲得對創建的形狀的引用,然後開始提取其相關數據。還有一個鏈接到「Polygon」的文檔,所以你可以更深入。 – 2012-04-27 13:11:53

+0

謝謝,但是,這返回一個異常,我改變了FOR循環內的兩行,我用「path.getAt(i)」而不是path [i],那工作...謝謝你的幫助 – Seif 2012-04-27 13:37:28

0

我把整個代碼爲我工作:

enter code here 
google.maps.event.addListener(drawingMgr, 'overlaycomplete', function(event){ 
var shape = event.overlay; 
var path = shape.getPath(); //returns an Array of LatLng 
for (var i = 0; i < path.length; i++) { 
    var lat = path.getAt(i).lat(); 
    var lng = path.getAt(i).lng(); 
    //do something with the data... 
} 
//put your message display code here 

});