【问题标题】:Implementing an openstreetmaps marker event实现一个openstreetmaps标记事件
【发布时间】:2012-03-02 05:59:45
【问题描述】:

在 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);
});

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

【问题讨论】:

    标签: javascript dom-events openlayers openstreetmap marker


    【解决方案1】:

    为此,您必须将数据 coord_data.file 与每个标记对象绑定。

    为此,您可以使用任何 ma​​rker 属性 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);
    });
    

    希望这会奏效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多