Вы можете отключить взаимодействие при создании карты
var map = new ol.Map({
layers [myLayer],
target: 'map',
interactions: ol.interaction.defaults({doubleClickZoom: false}),
view: new ol.View({
center: [x, y],
zoom: z
})
});
Чтобы включить или отключить взаимодействие, вам нужно присвоить его переменной, а не создавать по умолчанию:
var dcz = new ol.interaction.DoubleClickZoom();
var map = new ol.Map({
layers [myLayer],
target: 'map',
interactions: ol.interaction.defaults({doubleClickZoom: false}).extend([dcz]),
view: new ol.View({
center: [x, y],
zoom: z
})
});
для выключения и включения:
dcz.setActive(false);
dcz.setActive(true);
var layer = new ol.layer.Tile({
source: new ol.source.OSM()
});
var dcz = new ol.interaction.DoubleClickZoom();
var map1 = new ol.Map({
target: 'map',
layers: [layer],
interactions: ol.interaction.defaults({doubleClickZoom: false}).extend([dcz]),
view: new ol.View({
center: [0, 0],
zoom: 1
})
});
function dczOnOff() {
dcz.setActive(document.getElementsByName('dcz')[1].checked);
}
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
.map {
width: 100%;
height: 80%;
}
<link href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" rel="stylesheet" />
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js"></script>
<div id="map" class="map"></div>
<div style="padding-left: 50px;">
<input type="radio" name="dcz" value="0" size="16" onchange="dczOnOff()"> DCZ OFF</br>
<input type="radio" name="dcz" value="1" size="16" onchange="dczOnOff()" checked> DCZ ON</br>
Либо постоянно поддерживайте прослушиватель двойного щелчка, и пусть он проверяет, были ли ваши кнопки включены или выключены при двойном щелчке:
map.on('dblclick', function(evt) {
if (!dcz.getActive()) {
evt.map.forEachFeatureAtPixel(evt.pixel, function(feature,layer){
featureId = feature.getId()
areaFeature = feature.getGeometry().getArea()/ 10000;
totalSelectedArea -= parseFloat(areaFeature.toFixed(2));
})
}
});
$('#RemoveArea').on('click', function(){
dcz.setActive(false);
})
$('#OtherBtn').on('click', function(){
dcz.setActive(true);
})
или вам нужно сохранить ключ слушателя двойного щелчка, чтобы вы могли сбросить его позже
$('#RemoveArea').on('click', function(){
key = map.on('dblclick', function(evt) {
evt.preventDefault();
evt.map.forEachFeatureAtPixel(evt.pixel, function(feature,layer){
featureId = feature.getId()
areaFeature = feature.getGeometry().getArea()/ 10000;
totalSelectedArea -= parseFloat(areaFeature.toFixed(2));
})
});
})
$('#OtherBtn').on('click', function(){
ol.Observable.unByKey(key)
})