我为地图创建了一个标记列表,当它们被拖动到地图上时(通过jQuery可拖动) - 图像被替换为地图标记。Javascript可变范围问题
我遇到的问题是,当创建我的标记控制器 - 它们都有一个特定的类型 - 从列表中提取。当我遍历列表时,每个可拖动元素都会得到它的'stop'函数,该函数使用变量'type'...现在,当每个元素被拖曳时 - 它们的行为就好像它们是最后一个'类型'一样元素,而不是他们自己的。
任何人都可以建议我如何重组,以便每个标记保持其特定类型?
var createMarkerControl = function(){
var markerTypes = ['custom', 'exit', 'food', 'medical', 'shelter', 'video'];
var control = document.createElement('div');
control.setAttribute('id', 'markerInput');
for (var i = 0; i < markerTypes.length; i++){
var image = document.createElement('img');
image.setAttribute('id', 'draggable-' + markerTypes[i]);
image.setAttribute('src', 'images/gui/' + markerTypes[i] + '.png');
image.style.width = '30px';
//Set type
var type = markerTypes[i];
//Make elements dragable/dropable
control.appendChild(image);
$(image).draggable({
helper: 'clone',
stop: function(e){
//Add marker to map
var point = new google.maps.Point(e.pageX, e.pageY);
customMap.addPlacemark(point, type);
},
cursorAt: {left: 15, top: 0}
});
}
map.controls[google.maps.ControlPosition.RIGHT_CENTER].push(control);
}
你不应该使用'var'声明中的'for'循环内,仅供参考。 – AlienWebguy