通过按钮

时间:2015-06-09 14:45:17

标签: javascript jquery openlayers-3 wms getfeatureinfo

我有一个带有多个WMS层的Openlayers3-map。我想添加一个按钮(对于每个可查询图层),以便用户可以决定是否查询wms层。

var getfeature = function(click) {
    map.on(click, function (evt) {
        document.getElementById('info').innerHTML = '';
        var viewResolution = (view.getResolution());
        var url = wms_url.getGetFeatureInfoUrl(
            evt.coordinate, viewResolution, projection,
            {
                'INFO_FORMAT': 'text/html'
            });
        if (url) {
            document.getElementById('info').innerHTML =
                '<iframe seamless src="' + url + '"></iframe>';
        }
    });
}

到目前为止,这部分工作正常。

现在将getfeature-request与“user-interface”(这里只是一个复选框)结合起来

var userquery = function() {
    var $input = $( this );
    //checkbox true/false
    if($input.prop("checked")) {
        //change cursor appearance
        map.getViewport().style.cursor = 'help';
        //getfeature-request on singleclick
        getfeature('singleclick');
     } 
    else {
        //change cursor appearance, when checkbox is unchecked
        map.getViewport().style.cursor = '';
        //WHAT TO DO HERE???
        //...
   }
};

带有id =“cursor10”

的复选框
var checkbox = document.getElementById('cursor10');

并通过

添加功能
checkbox.onchange = userquery;

此时,getfeature功能在激活后继续工作。

我需要做什么,因此当取消选中复选框时,getfeature函数将停止工作?或者对另一种方法的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用unByKey() function按键取消注册地图的事件监听器

请参阅:http://jsfiddle.net/d1wrkb95/2/

var mapEventKey;

var getfeature = function(click) {
    mapEventKey = map.on(click, function (evt) {
        document.getElementById('info').innerHTML = '';
        var viewResolution = (view.getResolution());
        var url = wms_url.getGetFeatureInfoUrl(
            evt.coordinate, viewResolution, projection_to,
            {
                'INFO_FORMAT': 'text/html'
            });
        if (url) {
            document.getElementById('info').innerHTML =
                '<iframe seamless src="' + url + '"></iframe>';
        }
    });
};


var userquery = function() {
    var $input = $( this );
    //checkbox true/false
    if($input.prop("checked")) {
        //cursor ändern
        map.getViewport().style.cursor = 'help';
        //getfeatureabfrage bei einzelklick
        getfeature('singleclick');
     } 
    else {
        map.unByKey(mapEventKey);
        map.getViewport().style.cursor = '';
   }
};