如何从 Openlayer 3 地图中删除 JQuery 单击事件
How to remove a JQuery click event from an Openlayer 3 map
我需要通过 JQuery 删除 Openlayers 3 地图上的点击事件。
map.on 函数在单选按钮的更改中,最终创建了多个单击实例
map.on('click', function (evt) {
var url = temperatura.getSource().getGetFeatureInfoUrl(
evt.coordinate, viewResolution, viewProjection,
{
'INFO_FORMAT': 'application/json',
});
if (url) {
$.getJSON(url, function(result){
var Umidade_Rel = result.features[0]['properties']['Temperatura_2m'];
$('#information').removeClass('hidden');
$('#information').css('background-color', '#eaca6a');
$('#information p , #information h3').css('color', '#68a06f');
$('#information').html('<h3>Temperatura</h3><p>' + Umidade_Rel.toFixed(2) + '</p>');
});
}
});
已经尝试过:
map.off('click', myFunction);
map.removeEvent('click', myFunction);
map.getViewport().removeEventListener('click', myFunction);
我设法用另一种方式规避了这种情况。
在我的例子中,每次用户更改图层时都会创建一个点击事件,因此即使从地图中删除图层,活动的点击事件仍然存在(显示已删除图层的信息)
由于情况紧急,我设法通过检查活动图层来规避这种情况,并且只在地图上安排图层时才显示信息。
if (url && verifyLayer('Mylayer') == 'true'){
- code -
}
function verificaLayer(name){
var valid = '';
map.getLayers().forEach(function(layer){
var layername = (layer['values _']['name']);
if(name == layername){
valid = 'true';
}
});
return valid;
}
我需要通过 JQuery 删除 Openlayers 3 地图上的点击事件。
map.on 函数在单选按钮的更改中,最终创建了多个单击实例
map.on('click', function (evt) {
var url = temperatura.getSource().getGetFeatureInfoUrl(
evt.coordinate, viewResolution, viewProjection,
{
'INFO_FORMAT': 'application/json',
});
if (url) {
$.getJSON(url, function(result){
var Umidade_Rel = result.features[0]['properties']['Temperatura_2m'];
$('#information').removeClass('hidden');
$('#information').css('background-color', '#eaca6a');
$('#information p , #information h3').css('color', '#68a06f');
$('#information').html('<h3>Temperatura</h3><p>' + Umidade_Rel.toFixed(2) + '</p>');
});
}
});
已经尝试过:
map.off('click', myFunction);
map.removeEvent('click', myFunction);
map.getViewport().removeEventListener('click', myFunction);
我设法用另一种方式规避了这种情况。
在我的例子中,每次用户更改图层时都会创建一个点击事件,因此即使从地图中删除图层,活动的点击事件仍然存在(显示已删除图层的信息)
由于情况紧急,我设法通过检查活动图层来规避这种情况,并且只在地图上安排图层时才显示信息。
if (url && verifyLayer('Mylayer') == 'true'){
- code -
}
function verificaLayer(name){
var valid = '';
map.getLayers().forEach(function(layer){
var layername = (layer['values _']['name']);
if(name == layername){
valid = 'true';
}
});
return valid;
}