我有一个当前定义为样式的矢量图层:
var styles = new ol.style.Style({
image: new ol.style.Circle({
radius: 4,
fill: new ol.style.Fill({color: 'red'}),
stroke: new ol.style.Stroke({color: 'black', width: 1})
})
Run Code Online (Sandbox Code Playgroud)
我希望半径根据地图缩放级别动态变化 - 例如:
半径:(缩放/2)+1
我该怎么做?
更新:乔纳塔斯的评论帮助我朝着正确的方向前进。我最终使用了以下内容:
map.getView().on('change:resolution', function(evt) {
var zoom = map.getView().getZoom();
var radius = zoom / 2 + 1;
var newStyle = new ol.style.Style({
image: new ol.style.Circle({
radius: radius,
fill: new ol.style.Fill({color: 'red'}),
stroke: new ol.style.Stroke({color: 'black', width: 1})
})
})
vectorLayer.setStyle(newStyle);
});
Run Code Online (Sandbox Code Playgroud) 我使用以下代码根据缩放级别修改圆形标记的半径:
//add the layer to the map
map.addLayer(vectorLayer);
//add selection interactivity, using the default OL3 style
var select = new ol.interaction.Select();
map.addInteraction(select);
map.getView().on('change:resolution', function(evt) {
var zoom = map.getView().getZoom();
var radius = zoom / 2 + 1;
var newStyle = new ol.style.Style({
image: new ol.style.Circle({
radius: radius,
fill: new ol.style.Fill({color: 'red'}),
stroke: new ol.style.Stroke({color: 'black', width: 1})
})
})
vectorLayer.setStyle(newStyle);
});
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题是,如果我在地图上选择一个要素,则当地图缩放更改时,所选/突出显示的样式不会更改。如何根据缩放/分辨率动态修改所选功能的样式?
澄清 上面的代码已经适用于更改地图上所有要素的半径,但除此之外,我还需要更改所选要素的半径。选定和未选定的功能都应根据缩放级别而变化。