LeafletJS:如何删除缩放控件

Posted

技术标签:

【中文标题】LeafletJS:如何删除缩放控件【英文标题】:LeafletJS: How to remove the zoom control 【发布时间】:2013-05-08 09:19:30 【问题描述】:

我正在尝试移除 LeafletJS 地图上的缩放控件 (+/-)。

我使用的是MapBox.js version of Leaflet,但大部分操作与Leaflet相同。我这样实现我的地图:

var map = L.mapbox.map('map');

var layer = L.mapbox.tileLayer('MAPBOX-ID', 
    format: 'jpg70',
    minZoom: 13,
    maxZoom: 15,
    reuseTiles: true, 
    unloadInvisibleTiles: true
);
map.addLayer(layer);
map.setView([40.73547,-73.987856]);

documentation 说有一个 zoomControl 选项可以从地图上移除缩放控件,但我没有让它工作。

如何使用此实现删除缩放控件?

谢谢!

【问题讨论】:

【参考方案1】:

这对我有用:

var map = new L.map('map',  zoomControl: false );

用 mapbox 试试:

var map = L.mapbox.map('map',  zoomControl: false );

请参阅 Leaflet 文档中的 map creation 和 zoomControl option。

【讨论】:

var map = L.mapbox.map('map', zoomControl:false );不行,第二个参数需要是指定地图类型的字符串,第三个参数取 zoomControl:false 对于那些只想禁用鼠标滚轮缩放但不禁用使用地图上的 + 和 - 按钮进行缩放的用户,请将 zoomControl 替换为 scrollWheelZoom【参考方案2】:

如果您想动态打开和关闭缩放,您可以执行以下操作:

map.touchZoom.disable();
map.doubleClickZoom.disable();
map.scrollWheelZoom.disable();
map.boxZoom.disable();
map.keyboard.disable();
$(".leaflet-control-zoom").css("visibility", "hidden");

【讨论】:

想要禁用拖动功能的朋友也可以这样做:map.dragging.disable();【参考方案3】:

感谢坐标的回答,我能够找出正确的方法。解决办法是:

// Create the map
var map = L.mapbox.map('map', null,  zoomControl:false );

// Create my custom layer
var layer = L.mapbox.tileLayer('MAPBOX-ID', 
    format: 'jpg80',
    minZoom: 13,
    maxZoom:15,
    tileSize: 256,
    reuseTiles: true, 
    unloadInvisibleTiles: true
);


// Add the layer
map.addLayer(layer);

【讨论】:

【参考方案4】:

您可以通过这种方式删除控件zoomControl

map.removeControl(map.zoomControl);

【讨论】:

【参考方案5】:

你可以使用

map.zoomControl.remove();

【讨论】:

在我的例子中得到一个 TypeError: map.zoomControl.remove 不是一个函数。我发现的方法是使用这样的removeControl 函数:map.removeControl(map.zoomControl); 我猜,map.zoomControl.remove() 是 1.0.0 版本的新功能,而 map.removeControl() 是低版本的。【参考方案6】:
map.scrollWheelZoom.disable();

【讨论】:

【参考方案7】:

动态删除然后重新添加缩放控件:

var map = L.mapbox.map('map');

if( wantToRemove ) 
    map.removeControl( map.zoomControl ); 
 else 
    map.addControl( map.zoomControl );

【讨论】:

这个答案仍然有效,与其他答案不同

以上是关于LeafletJS:如何删除缩放控件的主要内容,如果未能解决你的问题,请参考以下文章

从反应传单中的地图中删除缩放控件

leafletjs添加标记轨迹线与删除标记轨迹线

缩放以适合 LeafletJS 地图上的所有标记

在objective-c中捏缩放后如何删除顶部和底部空间?

如何删除多余的控件

如何删除OCX控件?