单击按钮后重新渲染地图 - openlayers-3

时间:2015-10-06 13:55:58

标签: openlayers-3

我试图在点击我的按钮后重新渲染地图,因为我将基本地图从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();
});

我尝试了很多,但它不会刷新我的地图......

1 个答案:

答案 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'});