2014-01-16 210 views
0

我一直在研究Google地圖項目,該項目允許您在地圖上繪製邊界(多邊形)並將其保存。然後將其保存到數據庫,頁面刷新並將信息拉回到地圖上。Google Maps API v3禁用標記

我從其他用戶的帖子中找到了下面的代碼,並根據我的需要調整它,直到您從數據庫中繪製多邊形爲止。

google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon) { 
    polygon.setEditable(true); 
    google.maps.event.addListener(polygon.getPath(), 'set_at', function() { 
     document.getElementById("coordsField").value = updateArray(polygon); 
    }); 
    google.maps.event.addListener(polygon.getPath(), 'insert_at', function() { 
     document.getElementById("coordsField").value = updateArray(polygon); 
    }); 
}); 

代碼創建一個等待多邊形完成的偵聽器。然後它將多邊形設置爲可編輯,並創建兩個更多的偵聽器。第一個等待一個當前點被更新,第二個等待一個新的點被創建,然後它們都會更新一個包含所有點的數組,並在觸發時將它保存到一個隱藏的域中。

此代碼完美地用於創建新的多邊形,但是當從數據庫創建多邊形時,這是另一回事。當偵聽器等待多邊形完成時,它不會自動觸發,因爲它是自動執行的。我試圖去除包裝:

google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon) {} 

,並添加更新的聽衆,但是我得到一個錯誤「多邊形未定義」。有人能夠解釋如何解決這個問題嗎?

+0

如何創建從一個數據庫中的多邊形? –

回答

1

觸發polygoncomplete事件的DrawingManager會和自動創建的多邊形實例作爲參數傳遞給回調(的trigger第三個參數):

polygonInstance = new google.maps.Polygon(/*options*/); 

google.maps.event.trigger(drawingManager, 
         'polygoncomplete', 
          polygonInstance);