openlayers:使用MVT VectorTileSource进行群集不可能吗?

彼得

我是openlayers的新手,我想将cluster函数用于矢量数据。

如果我source:在群集选项中指出了MVT VectorTileSource?,这似乎不起作用

下面的代码。在群集中运行正常。

不支持吗?谢谢彼得

var vectorTileSource = new VectorTileSource({
     format: new MVT(),
     url: 
         'http://xxxx/geoserver/gwc/service/tms/1.0.0/' + 'airports:airports' +
         '@EPSG%3A'+'900913'+
         '@pbf/{z}/{x}/{-y}.pbf'
});

var clusterSource = new Cluster({
     distance: 30, 
     source: vectorTileSource
});


var clusterLayer = new VectorTileLayer({
    source: vectorTileSource, //----> this works   
    source: clusterSource, // ---> does NOT work 
    style: clusterStyle 
  });
麦克风

可能期望将MVT切片加载到矢量源的代码不会产生任何功能,也不会产生错误。参见https://gis.stackexchange.com/questions/225615/how-to-use-mapbox-vector-tiles-as-a-vector-source-in-ol3-so-that-labelling-will

但是,可以在法向矢量源中复制矢量图块层中的要素,这些要素可以在聚类源中使用(并在等高线密度测试中工作)

var vtLayer = new ol.layer.VectorTile({
    source: new ol.source.VectorTile({
        format new ol.format.MVT({
            featureClass: ol.Feature    // important
        }),
        ....
        ....
    }),
    style: []   // layer must be added to map to load features, use empty style to avoid display
});
map.addLayer(vtLayer);

var vSource = new ol.source.Vector();   // use this as the source for a cluster source
var featuresForZ = [];
var viewZ;

function vsRefresh() {
    vSource.clear();
    if (featuresForZ[viewZ]) {
        vSource.addFeatures(featuresForZ[viewZ]);
    }
}

vtLayer.getSource().on('tileloadend', function(evt) {
    var z = evt.tile.getTileCoord()[0];
    var features = evt.tile.getFeatures();
    features.forEach(function (feature) {
        // each vector tile has its own set of feature ids, but duplicates are not allowed in normal vector sources
        feature.setId(undefined);   
    });
    if (!Array.isArray(featuresForZ[z])) { featuresForZ[z] = []; }
    featuresForZ[z] = featuresForZ[z].concat(features);
    if (z === viewZ) {
        vsRefresh();
    }
});

map.getView().on('change:resolution', function() {
    // use VT features from the tile z level corresponding to view resolution
    var newZ = vtLayer.getSource().getTileGrid().getZForResolution(map.getView().getResolution());
    if (newZ !== viewZ) {
        viewZ = newZ;
        vsRefresh();
    }
});

// now create the cluster layer
var vLayer = new ol.layer.Vector({
    source: new ol.source.Cluster({
        source: vSource,
        geometryFunction: function(feature){
           // test data is linestrings
           return new ol.geom.Point(ol.extent.getCenter(feature.getGeometry().getExtent()));
        },
    }),
    style: function(feature) {
        return new ol.style.Style({
            image: new ol.style.Circle({
                radius: feature.get('features').length * 5,
                fill: new ol.style.Fill({ color: 'black' })
            })
       });
    }
});
map.addLayer(vLayer);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不可能对结论中使用的术语进行归纳?

来自分类Dev

如何一起使用DTO和ViewModel?还是不可能?

来自分类Dev

OpenLayers MVT图层和样式设置

来自分类Dev

使用F#时,当前是否不可能将UWP应用发布到Store?

来自分类Dev

为什么在Kotlin中不可能使用对`suspend`函数的方法引用?

来自分类Dev

是否不可能在使用Box,Rc或Arc等智能指针的递归数据类型上进行嵌套匹配?

来自分类Dev

不可能使用离子滑动法(无ChangeDetectorRef提供者)

来自分类Dev

为什么在Scala中不可能将变量与`to`一起使用?

来自分类Dev

不可能在析构函数上使用虚拟关键字

来自分类Dev

为什么在rust中使用动态错误而不是枚举很常见?使用编译时变体不好/不可能吗?

来自分类Dev

如何使用OpenLayers和Geoserver使用TileWMS进行统计

来自分类Dev

使用EF Core 3.1为SQL Server序列获取“ NEXT VALUE FOR”-不可能吗?

来自分类Dev

是否不可能像在HTML中那样在XML中使用<a>标记?

来自分类Dev

不可能使用vue-recaptcha-v3

来自分类Dev

NATIVE框架组件不可能进行本机锁定屏幕旋转吗?

来自分类Dev

python范围步长不可能使用枚举

来自分类Dev

这个查询COUNT是不可能的吗?

来自分类Dev

观看未使用的局部变量是不可能的吗?为什么?

来自分类Dev

使用动态类型而不是不可能的通用属性

来自分类Dev

标签页的返回不可能吗?

来自分类Dev

使用as-binding破坏可变参数函数:不可能吗?

来自分类Dev

在Windows 10中使用通配符搜索文件-不可能吗?

来自分类Dev

拦截文件流...不可能吗?

来自分类Dev

使用ggplot2在R中堆积条形图(在Excel中是不可能的)

来自分类Dev

Verilog - 使用多个 genvar 嵌套生成 for 循环,不可能?

来自分类Dev

在使用 C# 的 Selenium 页面对象模型中鼠标悬停是不可能的

来自分类Dev

如何使用 openjdk 10 构建“tomee 7.0.5 羽状”Docker 映像?- 或者这是不可能的?

来自分类Dev

不可能对声明的输入强制使用整数

来自分类Dev

SpriteKit:不可能由不同的父母使用交集?

Related 相关文章

  1. 1

    为什么不可能对结论中使用的术语进行归纳?

  2. 2

    如何一起使用DTO和ViewModel?还是不可能?

  3. 3

    OpenLayers MVT图层和样式设置

  4. 4

    使用F#时,当前是否不可能将UWP应用发布到Store?

  5. 5

    为什么在Kotlin中不可能使用对`suspend`函数的方法引用?

  6. 6

    是否不可能在使用Box,Rc或Arc等智能指针的递归数据类型上进行嵌套匹配?

  7. 7

    不可能使用离子滑动法(无ChangeDetectorRef提供者)

  8. 8

    为什么在Scala中不可能将变量与`to`一起使用?

  9. 9

    不可能在析构函数上使用虚拟关键字

  10. 10

    为什么在rust中使用动态错误而不是枚举很常见?使用编译时变体不好/不可能吗?

  11. 11

    如何使用OpenLayers和Geoserver使用TileWMS进行统计

  12. 12

    使用EF Core 3.1为SQL Server序列获取“ NEXT VALUE FOR”-不可能吗?

  13. 13

    是否不可能像在HTML中那样在XML中使用<a>标记?

  14. 14

    不可能使用vue-recaptcha-v3

  15. 15

    NATIVE框架组件不可能进行本机锁定屏幕旋转吗?

  16. 16

    python范围步长不可能使用枚举

  17. 17

    这个查询COUNT是不可能的吗?

  18. 18

    观看未使用的局部变量是不可能的吗?为什么?

  19. 19

    使用动态类型而不是不可能的通用属性

  20. 20

    标签页的返回不可能吗?

  21. 21

    使用as-binding破坏可变参数函数:不可能吗?

  22. 22

    在Windows 10中使用通配符搜索文件-不可能吗?

  23. 23

    拦截文件流...不可能吗?

  24. 24

    使用ggplot2在R中堆积条形图(在Excel中是不可能的)

  25. 25

    Verilog - 使用多个 genvar 嵌套生成 for 循环,不可能?

  26. 26

    在使用 C# 的 Selenium 页面对象模型中鼠标悬停是不可能的

  27. 27

    如何使用 openjdk 10 构建“tomee 7.0.5 羽状”Docker 映像?- 或者这是不可能的?

  28. 28

    不可能对声明的输入强制使用整数

  29. 29

    SpriteKit:不可能由不同的父母使用交集?

热门标签

归档