2013-04-08 138 views
1

我有以下功能添加一個標記,但我想通過單擊地圖添加多個標記。我已經谷歌搜索,但我無法得到任何直接的答案,我可以如何解決這個問題。使用Google Maps API v3添加多個標記

function placeMarker(location) { 
    if(marker) { 
     marker.setPosition(location); 
    } else { 
     marker = new google.maps.Marker({ 
      position: location, 
      map: gm_map, 
      draggable: true 
     }); 
    } 
} 

我知道我需要使用Array()但我不知道具體如何。我如何解決我的問題?

DEMO:已刪除,因爲問題已解決。

回答

2

你需要使用placeMarker功能的變量之外?您的功能不會刪除標記,而是檢查標記變量是否存在,並使用函數移動標記。如果您想要存在多個標記,則需要刪除該行。

function placeMarker(location) { 
    //marker variable will only exist inside this function 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: gm_map, 
     draggable: true 
    });   
} 

下面是一個例子:http://jsfiddle.net/bryan_weaver/aEyfW/

+0

有時最難的問題是最簡單的--.-非常感謝! :d – Erik 2013-04-08 12:57:47

1

好的,你需要在地圖上爲'click'事件設置一個事件監聽器。這需要將當前點擊的位置傳遞給placeMarker函數。試試這個

google.maps.event.addListener(gm_map, 'click', function(event) { 
     placeMarker(event.latLng); 
}); 

(在你初始化地圖相同的地方添加此事件偵聽器)並修改placeMarker功能,因此不是你每次點擊更新一個全局變量標誌,創建的每個新的標記時間:

function placeMarker(location) { 
    var marker = new google.maps.Marker({ 
      position: location, 
      map: gm_map, 
      draggable: true 
     }); 
} 
+0

哦drats!我忘了提一個重要的細節:(我真的很抱歉,我想用API – Erik 2013-04-08 11:35:01

+0

中的點擊功能添加多個標記感謝您的編輯,但只設置了一個標記,如果再次點擊地圖,舊標記會刪除並設置在新的位置上,請點擊我的編輯中的鏈接查看我的意思(當問題解決後,我將刪除鏈接) – Erik 2013-04-08 12:33:22

+1

好的,擺脫全球化'marker',每次重新創建它(儘管你可能會得到很多標記) – duncan 2013-04-08 12:54:04

相關問題