以编程方式调整OL3功能的大小

时间:2015-04-07 14:44:53

标签: openlayers-3

我有用户绘制功能的地图。在用户自定义输入地图比例后,我需要能够根据此比例调整所有现有地图要素的大小。

在OL 3中执行此操作的方法是什么?我在OL 2中看到过,有一个geometry.resize函数。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用StyleFunction完成此操作。

请看以下示例:http://openlayers.org/en/v3.4.0/examples/vector-layer.html

如果缩放地图,您会看到标签以特定分辨率显示。这是在样式函数内控制的。这是一个片段:

var featureOverlay = new ol.FeatureOverlay({
  map: map,
  style: function(feature, resolution) {
    // === SEE THIS NEXT LINE ===
    var text = resolution < 5000 ? feature.get('name') : '';
    if (!highlightStyleCache[text]) {
      highlightStyleCache[text] = [new ol.style.Style({
        stroke: new ol.style.Stroke({
          color: '#f00',
          width: 1
        }),
        fill: new ol.style.Fill({
          color: 'rgba(255,0,0,0.1)'
        }),
        text: new ol.style.Text({
          font: '12px Calibri,sans-serif',
          text: text,
          fill: new ol.style.Fill({
            color: '#000'
          }),
          stroke: new ol.style.Stroke({
            color: '#f00',
            width: 3
          })
        })
      })];
    }
    return highlightStyleCache[text];
  }
});

因此,您可以为任何分辨率范围定义要素的大小。请注意,style属性也适用于ol.layer.Vector图层。

答案 1 :(得分:-1)

您可以使用API​​:map.updateSize()

参考:http://openlayers.org/en/latest/apidoc/ol.Map.html#updateSize