我正在尝试动态设置我的 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参数但是没有出现。
(实际上你不能设置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
列出的那些.您当然可以添加一个新属性,但是新属性 minZoom
和 maxZoom
在这里不会像您预期的那样工作,因为 map 仍会处理旧 map
关于Openlayers 3 View setProperties 不填充 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42296884/