2012-05-17 62 views
1

我必須在運行時在Google地圖上創建多個標記。如何更改在運行時創建的標記位置(Google Maps v3)

他們的初始位置是隨機定義的。

當它們被創建時,我怎樣才能改變其中一些的位置?新位置也是隨機定義的。

我也試圖與

marker1.setPosition(pt); 

...但是,我得到錯誤

marker1 is not defined 

我想這個問題是MARKER1創建地圖時,在那一刻沒有定義.. 。就是這樣的。

你能幫我解決這個問題嗎?

p.s.有多少標記將被創建沒有限制。

UPDATE標記與創建:

function addNewMarker(locationsTotal) { 

if (document.getElementById("lon1").value == '') document.getElementById("lon1").value = '19'; 
if (document.getElementById("lat1").value == '') document.getElementById("lat1").value = '45'; 

var parliament = (map.getCenter()); 

var newMarker = 'marker' + locationsTotal; 
newMarker = new google.maps.Marker({ 
    name:newMarker, 
    id:newMarker, 
    map:map, 
    draggable:true, 
    animation: google.maps.Animation.DROP, 
    position: parliament, 
    icon: 'img/pin.png' 
}); 

google.maps.event.addListener(newMarker, "dragend", function() { 
    var center = newMarker.getPosition(); 
    var latitude = center.lat(); 
    var longitude = center.lng(); 
    var newLon = 'lon' + locationsTotal; 
    var newLat = 'lat' + locationsTotal; 
    document.getElementById(newLon).value = longitude; 
    document.getElementById(newLat).value = latitude; 
}); 

} 
+0

你可以發佈你正在使用創建標記的代碼? – WojtekT

+0

這是它的更新部分 – user198003

回答

3

,你可以看到newMarker只有在addNewMarker功能的範圍是可見的。 您需要的是將您的標記存儲在全局範圍內可見的數組中。 例如: 修改你的函數:

var allMarkers = []; 
function addNewMarker(locationsTotal) { 
    //.... skip 
    allMarkers.push(newMarker); 
} 

你的所有標記現在存儲在一個數組,所以你可以操縱它們。

要訪問的名稱標記添加功能:

function getMarker(name) { 
    for (k in allMarkers) 
    if (allMarkers[k].name == name) return allMarkers[k]; 
    return null; 
} 
+0

nope,它仍然未定義 – user198003

+0

使用函數getMarker按名稱查找標記。 – WojtekT

+0

它的工作原理,tnx! – user198003

相關問題