OpenLayers - 在ol.Overlay上添加click事件

时间:2015-06-05 03:25:51

标签: openlayers-3

我想在OpenLayers中将click事件添加到ol.Overlay。最好的方法是什么?

使用ol.Overlay的原因:我想添加一个自定义标记,其中包含可动态更改的图像和文本。为此,我使用ol.Overlay在元素中添加HTML,如下所示:

// Add markers
var marker = new ol.Overlay({
            position: ol.proj.fromLonLat(lng1, lat1),
    positioning: 'center-center',
    element: $(getMarkerContent())
});
map.addOverlay(marker);

function getMarkerContent() {
    var content = "<div>Name<........>";
    return content;
}

我试过以下:

  1. 向on element添加了onclick个事件 - 这个工作

  2. 添加了marker.on('click', function(evt){});但从未调用

  3. 有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

尝试在叠加元素上设置点击处理程序,而不是直接在叠加层上设置:

var textElement = $('<p class="overlay text">Text</p>');
var overlay = new ol.Overlay({
  position: pos,
  element: textElement
});
map.addOverlay(overlay);

textElement.click(function(evt) {
    console.log('click');
});

http://jsfiddle.net/jvdv489j/