是否可以使叠加层出现在地图控件下方?
Is it possibly to make overlays appear beneath the map controls?
我有一张地图,上面有一系列叠加层,这些叠加层是根据显示信息的外部数据构建的。我想知道是否有一种方法可以设置叠加层,使其不会在地图控件之上绘制?
默认情况下,当位置恰好重叠时,它们会覆盖和隐藏控件。
这与将控件添加到地图的方式有关。
放大和缩小按钮是默认的 ol.control.Zoom
,因此它是第一个添加到地图上的控件。然后您的自定义控件会在之后添加,因此会重叠缩放控件。
要克服它,请在地图初始化期间禁用默认缩放控制,如下所示:
......new ol.Map({
controls: ol.control.defaults({
zoom:false//here is the disable
........
然后添加您的自定义控件,然后在顶部添加缩放控件(如果有的话)。
所有一起应该是:
var map = new ol.Map({
controls: ol.control.defaults({
zoom:false
}).extend([
new app.CustomControl(),
new ol.control.Zoom()
]),
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2,
rotation: 1
})
});
这里是 fiddle 实际效果
更新
要处理叠加层,在叠加层初始化期间设置 insertFirst:true
,以便叠加层显示在控件下方。检查 api 文档 here
默认情况下,叠加层似乎会按预期显示在控件下方。
我的情况是 div 包含叠加数据的 z-index 样式迫使它高于控件。
我有一张地图,上面有一系列叠加层,这些叠加层是根据显示信息的外部数据构建的。我想知道是否有一种方法可以设置叠加层,使其不会在地图控件之上绘制?
默认情况下,当位置恰好重叠时,它们会覆盖和隐藏控件。
这与将控件添加到地图的方式有关。
放大和缩小按钮是默认的 ol.control.Zoom
,因此它是第一个添加到地图上的控件。然后您的自定义控件会在之后添加,因此会重叠缩放控件。
要克服它,请在地图初始化期间禁用默认缩放控制,如下所示:
......new ol.Map({
controls: ol.control.defaults({
zoom:false//here is the disable
........
然后添加您的自定义控件,然后在顶部添加缩放控件(如果有的话)。 所有一起应该是:
var map = new ol.Map({
controls: ol.control.defaults({
zoom:false
}).extend([
new app.CustomControl(),
new ol.control.Zoom()
]),
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2,
rotation: 1
})
});
这里是 fiddle 实际效果
更新
要处理叠加层,在叠加层初始化期间设置 insertFirst:true
,以便叠加层显示在控件下方。检查 api 文档 here
默认情况下,叠加层似乎会按预期显示在控件下方。
我的情况是 div 包含叠加数据的 z-index 样式迫使它高于控件。