openstreetmaps标记事件不起作用

时间:2012-03-02 05:59:45

标签: javascript-events maps openlayers openstreetmap marker

有一个循环来显示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);
});

如何在此循环中为每个标记添加个人事件?

1 个答案:

答案 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);
});

希望这会起作用。