首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mapbox gl js禁用控件

mapbox gl js禁用控件
EN

Stack Overflow用户
提问于 2016-11-01 04:57:53
回答 3查看 4.7K关注 0票数 8

有没有办法隐藏/移除或禁用控件,比如mapbox-gl-draw中的控件?

我添加绘图控件,如下所示

代码语言:javascript
复制
    draw = mapboxgl.Draw({
    drawing: true,
    displayControlsDefault: false,
    controls: {
        polygon: true,
        trash: true
    }
});

map.addControl(draw);

一旦绘制了多边形,我想禁用或隐藏控件,因此不再可能绘制另一个多边形。

非常感谢!

格雷果

EN

回答 3

Stack Overflow用户

发布于 2019-09-13 02:21:00

实际上,您可以通过少量的DOM交互来禁用绘图按钮(单独或成组)。简而言之,您可以找到绘图菜单的原生CSS类('mapbox-gl-draw_polygon''mapbox-gl-draw_point'等),添加disabled属性,并添加一个带有“disabled”/灰色样式的CSS类。示例如下:https://jsfiddle.net/emLs72zj/9/

代码语言:javascript
复制
// 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');
};
})
票数 6
EN

Stack Overflow用户

发布于 2020-10-28 22:32:40

目前在2020年,您应该使用

mapboxDraw =新的MapboxDraw({....map.addControl(mapboxDraw);

map.removeControl(mapboxDraw);

票数 3
EN

Stack Overflow用户

发布于 2016-11-02 23:46:48

控件的remove方法没有绑定到地图对象,但您可以通过在控件对象上调用remove()来删除它。https://jsfiddle.net/9o9mknqh/

代码语言:javascript
复制
// 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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40350464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档