我必须在运行时在Google地图上创建多个标记。
他们的初始位置是随机定义的。
创建它们时,如何更改其中某些位置?新职位也是随机定义的。
我确实尝试了
marker1.setPosition(pt);
......但是,我收到了错误
marker1 is not defined
我猜这个问题是在创建地图的时刻没有定义marker1 ......就是这样。
你能帮我解决这个问题吗?
P.S。创建标记的数量没有限制。
更新标记创建时使用:
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 :(得分: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;
}