OpenLayers - add click event on ol.Overlay

北慕城南 提交于 2019-12-08 11:43:02

问题


I want to add click event to ol.Overlay in OpenLayers. What would be the best way to do this?

Reason for using ol.Overlay: I want to add a custom marker with image and text that could be changed dynamically. For this, I am using ol.Overlay to add HTML in element as follows:

// 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;
}

I have tried following:

  1. Added onclick event to on element - this worked

  2. Added marker.on('click', function(evt){}); but it is never called

Is there a better way to do this ?


回答1:


Try to set the click handler on the overlay element and not directly on the overlay:

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/



来源:https://stackoverflow.com/questions/30657876/openlayers-add-click-event-on-ol-overlay

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!