Openlayers 3 View setProperties 不填充 map

标签 openlayers openlayers-3

我正在尝试动态设置我的 map 属性,但它不起作用。

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});

此代码不设置 View 。

我正在获取 map View 属性,map.getView().getProperties(); 但它只返回:

我设置了extent, zoom, minZoom, maxZoom参数但是没有出现。

DEMO APP

(实际上你不能设置project, extent, min, max zoom and resolutions 创建 map 后)

这是一个错误吗?

最佳答案

我从 this answer 中获取了解决方案

你可以通过这种方式在 map 中设置一个新的 View 来做你想做的事:

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

如果你想保留所有的 View 属性而不是指定一些特定的东西,你可以获取它们并将它们传递给新的 View :

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

我更新了你的 jsfiddle example

您可以使用 setProperties 更改的唯一 View 属性是由 getProperties 列出的那些.您当然可以添加一个新属性,但是新属性 minZoommaxZoom在这里不会像您预期的那样工作,因为 map 仍会处理旧 map

关于Openlayers 3 View setProperties 不填充 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42296884/

相关文章:

openlayers - 将 openlayers 与本地 basemap 一起使用?

openlayers-3 - 我怎样才能限制 map 只显示选定的国家?

javascript - 如何获取 GeoJSON 矢量源的范围?

javascript - 使用多边形形状文件源的 OpenLayers 3 框选择

scroll - Openlayers 3 关闭平滑滚动

javascript - 在 Openlayers 的特定放大上更改标签的不透明度

javascript - 如何从 OpenLayers 坐标中分离经度和纬度

移动设备上的 OpenLayers 3 dragBox

javascript - Openlayers 5 : Modify interaction, 如何获取指向的顶点

extjs - WMS 获取功能信息;多层、不同来源