我怎样才能在将图层添加到地图时将其添加为 OpenLayers 3 中的底层?
How can i make so that when a layer is added to a map it is added as the bottom layer in OpenLayers 3?
我正在想办法切换地图类型并将图层添加为底层。其他层是应该始终位于顶部的信息层。我尝试使用 map.baseLayer 属性 但该层仍呈现在其他层之上。
这是我得到的:
var OSMLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
// Initial map
var currentMap = OSMLayer;
var mapQuestOSMLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'osm'})
});
var mapQuestSATLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
});
var mapQuestHYBLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'hyb'})
});
var map = new ol.Map({
layers: [OSMLayer],
target: document.getElementById('map-canvas'),
view: new ol.View({
center: [0, 0],
zoom: 3
})
});
// How can i set the layer as the bottom layer?
$('#btnMapTypes ul.dropdown-menu li a').click(function (e) {
map.removeLayer(currentMap);
switch($(this).attr('data-type')){
case 'OSM':
map.addLayer(OSMLayer);
map.baseLayer = OSMLayer;
currentMap = OSMLayer;
break;
case 'mapQuestOSM':
map.addLayer(mapQuestOSMLayer);
map.baseLayer = mapQuestOSMLayer;
currentMap = mapQuestOSMLayer;
break;
case 'mapQuestSAT':
map.addLayer(mapQuestSATLayer);
map.baseLayer = mapQuestSATLayer;
currentMap = mapQuestSATLayer;
break;
case 'mapQuestHYB':
map.addLayer(mapQuestHYBLayer);
map.baseLayer = mapQuestHYBLayer;
currentMap = mapQuestHYBLayer;
break;
}
});
实现我想要的结果的正确方法是什么?谢谢!
如果你在地图上执行 getLayers,你会得到一个集合,它具有操作顺序的功能,例如 insertAt(或 setAt 取决于你的需要):http://openlayers.org/en/v3.8.2/apidoc/ol.Collection.html
我正在想办法切换地图类型并将图层添加为底层。其他层是应该始终位于顶部的信息层。我尝试使用 map.baseLayer 属性 但该层仍呈现在其他层之上。
这是我得到的:
var OSMLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
// Initial map
var currentMap = OSMLayer;
var mapQuestOSMLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'osm'})
});
var mapQuestSATLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
});
var mapQuestHYBLayer = new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'hyb'})
});
var map = new ol.Map({
layers: [OSMLayer],
target: document.getElementById('map-canvas'),
view: new ol.View({
center: [0, 0],
zoom: 3
})
});
// How can i set the layer as the bottom layer?
$('#btnMapTypes ul.dropdown-menu li a').click(function (e) {
map.removeLayer(currentMap);
switch($(this).attr('data-type')){
case 'OSM':
map.addLayer(OSMLayer);
map.baseLayer = OSMLayer;
currentMap = OSMLayer;
break;
case 'mapQuestOSM':
map.addLayer(mapQuestOSMLayer);
map.baseLayer = mapQuestOSMLayer;
currentMap = mapQuestOSMLayer;
break;
case 'mapQuestSAT':
map.addLayer(mapQuestSATLayer);
map.baseLayer = mapQuestSATLayer;
currentMap = mapQuestSATLayer;
break;
case 'mapQuestHYB':
map.addLayer(mapQuestHYBLayer);
map.baseLayer = mapQuestHYBLayer;
currentMap = mapQuestHYBLayer;
break;
}
});
实现我想要的结果的正确方法是什么?谢谢!
如果你在地图上执行 getLayers,你会得到一个集合,它具有操作顺序的功能,例如 insertAt(或 setAt 取决于你的需要):http://openlayers.org/en/v3.8.2/apidoc/ol.Collection.html