有一个循环来显示OpenStreemaps上带有事件的标记,例如:
for (var i = 1; i <= length; i++) {
instance.markers[provider][index]['marker'] = new OpenLayers.Layer.Markers("Markers");
instance.map_instance[divBlock].map.addLayer(instance.markers[provider][index]['marker']);
instance.markers[provider][index]['icon'] = new OpenLayers.Icon(coord_data.img_icon, new OpenLayers.Size(17,17));
var mark = new OpenLayers.Marker(center, instance.markers[provider][index]['icon']);
mark.events.register('click', mark, function(evt){
alert(coord_data.file);
});
instance.markers[provider][index]['marker'].addMarker(mark);
}
此代码中的事件无效。
下一个event.register可以在图层内的整个标记上工作:
instance.map_instance[divBlock].map.events.register('click', instance.markers[provider][index]['marker'], function(evt){
alert(coord_data.file);
});
如何在此循环中为每个标记添加个人事件?
答案 0 :(得分:0)
为此您必须将数据 coord_data.file 与每个标记对象绑定。
为此您可以使用任何标记属性 Like .. id,title ...
示例:强>
var mark = new OpenLayers.Marker(center, instance.markers[provider][index]['icon']);
mark.title = coord_data.file;
mark.events.register('click', mark, function(evt){
alert(this.title);
});
希望这会起作用。