我试图在点击我的按钮后重新渲染地图,因为我将基本地图从source.OSM({layer:'hot'})更改为ol.source.MapQuest({layer:'饱和'})。
我正在努力做到以下几点:
var map = new ol.Map({
target: 'map',
controls: [],
layers: layers,
view: new ol.View({
center: ol.proj.transform(lonlat, 'EPSG:4326', 'EPSG:3857'),
zoom: 14
})
});
var layers = [
new ol.layer.Tile({
style: 'none',
source: baseLayer
}),
new ol.layer.Group({
style: 'leegstand',
visible: false,
layers: [
new ol.layer.Tile({
source: baseLayer
}),
borderObject,
leegstandObject
]
}), ..etc
$('.base-sat').click(function(){
baseLayer = new ol.source.MapQuest({layer: 'sat'});
//ol.source.tile.Changed()
//layers.getSource().changed();
//mapRender();
});
我尝试了很多,但它不会刷新我的地图......
答案 0 :(得分:0)
使用map.renderSync()
或map.render()
触发重新渲染。 renderSync
应该同步重新渲染地图,而render
会在下一个动画帧中触发渲染。
虽然看起来你实际上没有改变任何东西,但是从有问题的代码来看。在点击处理程序中,您为Source
变量分配了新的baseLayer
。但是你似乎没有修改地图中的任何图层。您可能想要的是使用
// layer is assumed to reference the layer you wish to change
layer.setSource(new ol.source.MapQuest({layer: 'sat'});