我正在尝试动态设置地图属性,但是它不起作用。

var map = new ol.Map({
    target: 'map',
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM()
        })
    ],
    view: new ol.View({
        center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
        zoom: 4
    })
});


我试图像这样设置最小最大缩放级别:

map.getView().setProperties({minZoom: 5, maxZoom: 9});


此代码未设置视图。

我正在获取地图视图属性,map.getView().getProperties();,但它仅返回:

openlayers - Openlayers 3 View setProperties不填充 map-LMLPHP

我正在设置范围,缩放,最小缩放,最大缩放参数,但没有出现。

DEMO APP

(实际上,创建地图后,您无法设置projectextentminmax zoomresolutions

这是一个错误吗?

最佳答案

我已经从this answer获得了解决方案

您可以通过以下方式在地图中设置新的视图来执行所需的操作:

map.setView(new ol.View({
    center: map.getView().getCenter(),
    zoom: map.getView().getZoom(),
    maxZoom: 9,
    minZoom: 5
}));


如果要保留所有视图属性而不是分配特定的属性,则可以获取它们并将它们传递给新的视图:

var properties = map.getView().getProperties();
properties["minZoom"] = 5;
properties["maxZoom"] = 9;
map.setView(new ol.View(properties));


我更新了您的jsfiddle example

只能使用setProperties更改的视图属性是getProperties列出的视图属性。您当然可以添加一个新属性,但是新属性minZoommaxZoom不能按您期望的那样工作,因为地图仍然可以处理旧属性

09-12 14:53