2011-09-19 155 views
2

我遇到了問題。我正在製作一張地圖,您可以使用「工具」添加標記,多義線和多邊形。像MS Paint和那裏的工具一樣。你點擊工具,然後在地圖上做任何你想要的。Google Maps API V3-在創建標記後添加偵聽器

事情是,我沒有任何聽衆添加標記,所以我不能點擊它們 - 因爲我想要那個工具只是把標記放在選定的地方。

而我的問題是創建一個工具,它可以讓我刪除這些標記。但要做到這一點,我的工具將需要添加點擊事件監聽器標記..他們是在一段時間之前創建的。那可能嗎?因爲當我嘗試製作addeventlistener(marker,'click,xxx())時,我得到了標記未定義的錯誤。

我不會在這裏發佈整個代碼,因爲它很多,但如果你需要任何部分,只是問,我會盡快發佈。

EDIT1:

由於馬吉德Fouladpour說,全局變量的作品,但僅適用於最後添加標記:○?

+0

每當頁面加載,通過所有標記你循環和添加偵聽他們中的每一個 –

+0

嗯,我試圖使刷新較少的網站。我使用ajax將標記發送到數據庫,其他所有內容都不刷新。這就是爲什麼我正在尋找解決方案。我在頁面加載期間從數據庫添加每個標記,然後,我想添加該監聽器,只有當用戶選擇了一個工具。 – Kedor

回答

3

您需要將設爲全局變量。您現在在函數內部定義它:

function somefunction(params) { 
    ... 
    var marker = .... 
    ... 
} 

相反,你應該有:

var marker; 
... 

function somefunction(params) { 
    ... 
    marker = .... 
    ... 
} 

UPDATE

您的評論顯示,現在你所得到的參考部分權利。如果你的函數沒有被觸發,你應該在你的add listener部分代碼中遇到問題。你是這樣做的嗎?

google.maps.event.addListener(marker, 'click', function() { 
    alert('x'); 
}); 
+0

嗯,有些東西還沒有工作,我做了一個簡單的網站,只用4個標記沒有evenListener映射,然後嘗試添加該監聽器給他們。當我有函數中定義的變量我有錯誤沒有定義,但是當我把它放在一切的頂部,我只是沒有得到任何錯誤消息,仍然不工作。試圖彈出「alert('x');」點擊它後......沒有出現。 – Kedor

+0

它確實有效,對於最後添加的標記,我需要爲每個標記使用其他「標記」變量。所以我可以參考它的每一個。我希望他們都能得到那個聽衆,所以我可以選擇我想要的標記刪除 – Kedor

+0

對於多個標記,您需要有一個'markers'數組。所以你定義了一個空的全局數組''var markers = [];'在函數之外,並且在你添加每個標記到地圖的地方你也應該把它推到數組中。然後你可以像'markers [n]'一樣操作數組中的每個標記。要獲得更具體的幫助,您需要爲您的問題添加代碼片段:(i)將標記添加到地圖的部分,以及(ii)添加單擊事件偵聽器的部分。 –

相關問題