有没有办法隐藏/移除或禁用控件,比如mapbox-gl-draw中的控件?
我添加绘图控件,如下所示
draw = mapboxgl.Draw({
drawing: true,
displayControlsDefault: false,
controls: {
polygon: true,
trash: true
}
});
map.addControl(draw);一旦绘制了多边形,我想禁用或隐藏控件,因此不再可能绘制另一个多边形。
非常感谢!
格雷果
发布于 2019-09-13 02:21:00
实际上,您可以通过少量的DOM交互来禁用绘图按钮(单独或成组)。简而言之,您可以找到绘图菜单的原生CSS类('mapbox-gl-draw_polygon'、'mapbox-gl-draw_point'等),添加disabled属性,并添加一个带有“disabled”/灰色样式的CSS类。示例如下:https://jsfiddle.net/emLs72zj/9/
// HTML
<div id="map">
</div>
<button id="disable-draw">
Disable Draw Btns
</button>
<button id="enable-draw">
Enable Draw Btns
</button>
// CSS
body { margin:0; padding:0; overflow:hidden;}
#map { position:absolute; top:20px; bottom:0; width:100%; }
.disabled-button {
-webkit-filter: opacity(.3) drop-shadow(0 0 0 #FFF);
filter: opacity(.3) drop-shadow(0 0 0 #FFF);
cursor: default !important;
}
// JS
mapboxgl.accessToken = 'pk.eyJ1IjoieXVuamllIiwiYSI6ImNpZnd0ZjZkczNjNHd0Mm0xcGRoc21nY28ifQ.8lFXo9aC9PfoKQF9ywWW-g';
var sfmapbox = [-122.413692, 37.775712];
// Create a new dark theme map
var map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/mapbox/outdoors-v9', //stylesheet location
center: sfmapbox, // starting position
zoom: 12, // starting zoom
minZoom: 11,
});
map.on('load', function(){
// create control
var draw = mapboxgl.Draw({
drawing: true,
displayControlsDefault: false,
controls: {
polygon: true,
trash: true
}
});
// add control to map
map.addControl(draw);
var disableBtn = document.getElementById('disable-draw');
var enableBtn = document.getElementById('enable-draw');
var drawPolygon = document.getElementsByClassName('mapbox-gl-draw_polygon');
disableBtn.onclick = (e) => {
drawPolygon[0].disabled = true;
drawPolygon[0].classList.add('disabled-button');
};
enableBtn.onclick = (e) => {
drawPolygon[0].disabled = false;
drawPolygon[0].classList.remove('disabled-button');
};
})发布于 2020-10-28 22:32:40
目前在2020年,您应该使用
mapboxDraw =新的MapboxDraw({....map.addControl(mapboxDraw);
map.removeControl(mapboxDraw);
发布于 2016-11-02 23:46:48
控件的remove方法没有绑定到地图对象,但您可以通过在控件对象上调用remove()来删除它。https://jsfiddle.net/9o9mknqh/
// create control
var draw = mapboxgl.Draw({
drawing: true,
displayControlsDefault: false,
controls: {
polygon: true,
trash: true
}
});
// add control to map
map.addControl(draw);
// remove control from map
draw.remove()https://stackoverflow.com/questions/40350464
复制相似问题