javascript - 设置样式缩放级别 openlayers 3

标签 javascript openlayers openlayers-3

在 Openlayers 中,可以根据缩放级别打开或关闭某些功能。尽管查看了文档,但我在 OpenLayers 3 中没有找到相同的功能。有谁知道如何做到这一点?这是我放置在 map 上的功能,而 ol.style.Text 是我希望仅在用户放大到特定缩放级别后才显示的功能。

var geoJsonObj = {
  'type': 'Feature',
  'geometry': JSON.parse(response.FieldList[key].Shape)
}
var vectorSource = new ol.source.Vector({
  features: (new ol.format.GeoJSON()).readFeatures(geoJsonObj)
});
Fields[Field.FieldID] = new ol.layer.Vector({
  projection: 'EPSG:4269',
  source: vectorSource,
  style: new ol.style.Style({
    stroke: new ol.style.Stroke({
      color: 'yellow',
      width: 1
    }),
    fill: new ol.style.Fill({
      color: rcisWebMapUtilities.convertHex(response.FieldList[key].Shade, '0.5')
    }),
    text: new ol.style.Text({
      textAlign: 'Center',
      text: response.FieldList[key].Acres,
      scale: 1
    })
  })
});

最佳答案

矢量图层示例演示了如何使用样式函数来实现与分辨率相关的样式: http://openlayers.org/en/latest/examples/vector-layer.html

这是一个简化版本:

var layer = new ol.layer.Vector({
  source: new ol.source.Vector(),
  style: function(feature, resolution) {
    var text = resolution < 5000 ? feature.get('name') : '';
    return new ol.style.Style({
      text: new ol.style.Text({
        text: text,
        fill: new ol.style.Fill({
          color: '#000'
        }),
        stroke: new ol.style.Stroke({
          color: '#f00',
          width: 3
        })
      })
    });
  }
});

上面的图层将以低于每像素 5000 个 map 单位的分辨率渲染要素名称

上面的矢量图层示例有一些额外的代码,可以在可能的情况下重用样式。如果您有大量功能,则可以通过为每个渲染帧创建新的样式实例来给垃圾收集器施加过大的压力。

关于javascript - 设置样式缩放级别 openlayers 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816635/

相关文章:

javascript - Jquery clone() 不会克隆使用 data() 设置的新值

javascript - 如何在 mozilla 上获取 Fabric.js Canvas 鼠标坐标

javascript - 如何缩短在数组传播中具有 if 语句的 javascript 代码

javascript - 自定义 OpenLayers 控件

javascript - 如何在 OpenLayers 3 中创建静态标记?

javascript - 在OL3中保存多个点的坐标

javascript - 使用@media only 屏幕实现移动 View 以隐藏 div 的概率

java - 如何在 Servlet Filter 中从 HttpServletRequest 获取带有参数的 POST URL? (对于代理应用程序)

openlayers - 矢量层的自定义样式

javascript - Openlayers 4 添加动画暂停/继续功能?