dictionary - OpenLayers:注册功能来标记事件不起作用

标签 dictionary openlayers marker

我在 OpenLayers 中有一张 map ,其中包含一个简单图层和一个标记图层。 标记层中的标记是从data.rows生成的。对于每个标记,我想向“mousedown”(或“click”)事件注册一个函数,但这似乎不起作用。标记已添加到 map 中,但单击后,不会输入注册到事件的功能。

// Marker-Layer
    var markers = new OpenLayers.Layer.Markers("SABA")

    // Icon
    var size = new OpenLayers.Size(21, 25);
    var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
    var iconPath = document.location.protocol + '//' + document.location.hostname + '/saba/modulesinst/sa/icons/pin.png';
    var icon = new OpenLayers.Icon(iconPath, size, offset);

    // Rows durchgehen
    Array.each(data.rows, function(item, index) {
        if (item.x != null && item.y != null) {
            var newmarker = new OpenLayers.Marker(new OpenLayers.LonLat(item.x, item.y), icon.clone())

            newmarker.events.register('mousedown', newmarker, function(evt) {
                alert(item.name);
                OpenLayers.Event.stop(evt);
            });
            markers.addMarker(newmarker);
        }
    });
    this.listMap.addLayer(markers);

最佳答案

Openlayers 文档指出,您应该使用矢量图层来实现此目的,而不是标记层:“标记是与浏览器中的地理数据交互的‘较旧’方式。大多数新代码应尽可能使用向量层代替标记层”。

当您使用矢量图层时,您可以添加如下标记:

var marker = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lon,lat), attributes);
vectorLayer.addFeatures(marker);

您可以使用此代码来初始化矢量图层:

function selected (evt) {
    alert(evt.feature.id + " selected on " + this.name);
}
var layer = new OpenLayes.Layer.Vector("VLayer");
layer.events.register("featureselected", layer, selected);

最后将选择功能控件添加到您的 map 中:

var control = new OpenLayers.Control.SelectFeature(layer);
map.addControl(control);
control.activate();

引用这个Openlayers Documentation

关于dictionary - OpenLayers:注册功能来标记事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14565208/

相关文章:

android - 在谷歌地图 api 2 上 move 标记

javascript - 如何转义谷歌地图中标记标题中的字符?

android - 在离线静态图像 (jpeg) 上显示用户的当前位置 - Android

ios - 如何从 IOS Swift 'Any' 类型访问和获取嵌套值?

javascript - Openlayers 4 中的 LineString 方向箭头

zooming - 在 OpenLayers 中平滑缩放和平移?

SVG 标记未呈现

c# - C# 中带有列表的默认字典

arrays - 将范围(有条件)中的唯一值组合到另一个范围中

javascript - 如何在 OpenLayers 5 中删除绘图?