我有一些功能,当点击li元素时,标记会添加到地图中。如果单击另一个li,则删除原始标记并显示新标记。
我遇到的问题是,当第一次点击li时,标记会被放置在地图上。单击第二个li时,将删除标记但不添加新标记。我在firebug中没有错误。我看不出我错过了什么。
$(document).ready(function() {
$(".markerSelection").click(function() {
var selectionId = $(this).attr("id");
drop(selectionId);
});
});
var markers = {
shopping : [
new google.maps.LatLng(52.26183, -7.11339),
new google.maps.LatLng(52.26134, -7.11226),
new google.maps.LatLng(52.26067, -7.11181),
new google.maps.LatLng(52.26003, -7.11033)],
cars : [
new google.maps.LatLng(52.26183, -7.11339),
new google.maps.LatLng(52.26134, -7.11226),
new google.maps.LatLng(52.26067, -7.11181),
new google.maps.LatLng(52.26003, -7.11033)]
};
var iterator = 0;
function drop(selectionId) {
clearOverlays();
for (var i = 0; i < markers[selectionId].length; i++) {
setTimeout(function() {
addMarker(selectionId);
}, i * 200);
}
}
function addMarker(selectionId) {
marker = new google.maps.Marker({
position: markers[selectionId][iterator],
map: map,
draggable: false,
animation: google.maps.Animation.DROP
});
iterator++;
markersArray.push(marker);
}
// Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
}
}
答案 0 :(得分:0)
您已将 markers
定义为Json变量,但我不知道markers[selectionId]
的含义!标记未被定义为数组,并且通过索引引用它似乎不正确!
答案 1 :(得分:0)
我再次审核了您的代码,我认为问题出在iterator
,在全局范围内初始化为0。这就是为什么它第一次工作正常,但在那之后,指数超过了。看来你应该在drop()
函数的开头将它设置为零。
但是,如果将index作为addMarker()
的第二个参数而不是drop()
中处理的外部变量,并使代码复杂化,则更有意义。