小编bra*_*b84的帖子

ol3 / Openlayers3:缩放时改变圆的半径

我有一个当前定义为样式的矢量图层:

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)

openlayers-3

5
推荐指数
1
解决办法
3931
查看次数

OL3:如何根据缩放修改选定的要素样式?

我使用以下代码根据缩放级别修改圆形标记的半径:

//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)

但我遇到的问题是,如果我在地图上选择一个要素,则当地图缩放更改时,所选/突出显示的样式不会更改。如何根据缩放/分辨率动态修改所选功能的样式?

澄清 上面的代码已经适用于更改地图上所有要素的半径,但除此之外,我还需要更改所选要素的半径。选定和未选定的功能都应根据缩放级别而变化。

javascript openlayers-3

5
推荐指数
1
解决办法
6077
查看次数

标签 统计

openlayers-3 ×2

javascript ×1