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

2024-04-18

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

如果我指示为,这似乎不起作用source:在 Cluster 选项中 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 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openlayers:使用 MVT VectorTileSource 进行集群不可能吗? 的相关文章

  • GeoServer style(sld)中文乱码解决方法

    在说明这个问题之前 有三点需要明确 一是创建New style时 网页中文本框内的内容才是最终会应用到GeoServer的sld内容 这与本地sld文件没有关系 二是xml的encoding定义的编码不一定和文件编码 文件的字符编码 一致
  • Mapquest 直接图块访问已停止

    截至今天 2016 年 7 月 11 日 MapQuest 已停止直接访问其图块 他们似乎只支持Leaflet iOS和Android SDK 知道如何让 Openlayers 再次与 MapQuest 配合使用吗 还是我们应该考虑其他替代
  • 如何在 OpenLayers-3 中使用 SVG 图像作为地图标记?

    我正在尝试使用 SVG 图像在 OpenLayers 3 OL3 中创建地图 针滴 即地图标记 目前 我使用 PNG 图像作为引用 ol style Icon 源 src 属性的 pindrop 效果很好 但是 使用 SVG 图像时会失败
  • 如何在OpenLayers中获取多边形的坐标

    我一直在寻找如何确定 OpenLayers 中组成多边形 要素 的点的坐标 假设我创建了一个像下面这样的多边形this例子 我需要知道组成多边形的点 这样我就可以将它们保存在某个地方 我敢打赌这很容易 我只是找不到任何东西 可能我不知道我应
  • 将 OpenStreetMaps 与 Cordova 集成

    我想知道你们是否知道如何将开放街道地图 OSM 与科尔多瓦一起使用 这几天都在找 我能得出的结论是 我不应该直接使用 OSM 的 API 因为如果我有太多调用 他们的服务器会阻止我 所以有免费的开源名称 例如 1 Openlayers 2
  • Openlayers 中的 KML 图层无法在本地主机上运行

    我在 OpenLayers 中渲染 KML 文件时遇到奇怪的问题 这似乎很容易 但事实并非如此 我从这里开始一个例子OpenLayer 示例 我想添加我自己的 KML 它不起作用 我使用绝对 URL 创建了该示例的本地副本 如下所示
  • TypeScript + OpenLayers 7:设置和获取功能 ID 失败

    我有一张带有两个自定义按钮的地图 绘制多边形 and 删除功能 它允许我绘制和删除绘制的多边形 此外 我为多边形创建了一个测量叠加 显示了它们的面积 见图 为了识别多边形和覆盖层之间的连接 我尝试在它们上设置相同的 id 以便在删除多边形时
  • OpenLayers 动画 getView().fit()

    我一直在研究 openlayers 的动画功能 我可以看到使用缩放到给定点和分辨率是多么简单 view animate center position zoom 11 但我不知道如何制作动画 map getView fit extent m
  • 有没有办法使用 OpenLayers 更改 openstreetmap 中某些要素的颜色?

    我正在使用 OpenLayers 来显示 openstreetmap 有没有办法编辑地图上的某些功能 例如改变水的颜色 消除国家之间的边界等 如果不能使用 JavaScript 来完成 我猜还有其他方法可以做到这一点 比如托管您自己的地图版
  • 使用 asp.net 和 iis 在 geoserver 中进行身份验证

    我不知道这是否是一个愚蠢的问题 但是如何将 asp net 身份验证与 openlayers 结合 我创建了一个登录页面来在 openlayers 中进行身份验证 在 c 中 服务器端 这是我的代码 Uri uri new Uri http
  • OpenLayers:如何计算两点之间的距离?

    如何使用墨卡托投影计算 OpenLayers 中两点之间的距离 Thanks use point1 distanceTo point2 var Geographic new OpenLayers Projection EPSG 4326 v
  • Openlayers:具有不同层的集群

    我有多个层 WFS 可以从菜单中选择 我使用 Openlayers 每层都有不同的标记 如下图所示 但是 我想对点进行分组 即使用聚类技术 我看到了这个例子http viglino github io ol ext examples ani
  • 如何在 openLayer 地图中加载本地 gpx 文件?

    我认为标题很清楚 我正在使用 openLayer 库 v4 6 5 并且我试图在加载页面时在地图中加载本地 GPX 文件 在官方文档中 在 GPX 数据示例中 https openlayers org en latest examples
  • 如何使用Openlayers地图

    我对这个 openlayers 地图完全困惑了 即使有很多例子和维基 我也找不到如何重用它 我的意思是我想显示我的城市地图 可由管理员管理 管理员可以添加点和位置 并且它应该显示在前端 请帮我看看该怎么做 Like Conley写道 开放层
  • 如何在 OpenLayers 4 上添加点击事件?

    我需要将事件侦听器附加到 OpenLayers 4 中的功能 我已经尝试过feature on 点击 function 但它不起作用 如何将晒黑事件添加到功能中 先感谢您 没有click为功能注册的事件ol Feature目的 但click
  • openlayers:使用 MVT VectorTileSource 进行集群不可能吗?

    我是 openlayers 的新手 我想使用cluster矢量数据的函数 如果我指示为 这似乎不起作用source 在 Cluster 选项中 MVT VectorTileSource 代码如下 没有集群也能正常工作 不支持吗 谢谢 彼得
  • 设置样式缩放级别 openlayers 3

    在 Openlayers 中 可以根据缩放级别打开或关闭某些功能 尽管查看了文档 但我在 OpenLayers 3 中没有找到相同的功能 有谁知道如何做到这一点 这是我放置在地图上的功能ol style Text是我只想在用户放大到特定缩放
  • OpenLayers 3 中的边界如何工作?

    是否有这样的概念OpenLayers Bounds http dev openlayers org docs files OpenLayers BaseTypes Bounds js htmlOpenLayers 2 x 中的内容仍然存在于
  • 自定义 OpenLayers 控件

    如何轻松自定义 OpenLayers 地图控件 或者至少 如何最小化控件的高度 谢谢 附言 有 CSS 覆盖吗 您可以对任何 openLayers 控件进行子类化 我刚刚通过对 PanZoomBar panZoomBar js 进行子类化
  • Flutter 和 Openlayers - 包括 flutter 中的 js 库

    来自基于 js cordova 的跨平台领域 我最近正在深入研究 flutter 所以我想知道直接使用 flutter 中的各种 js 库的选项 更具体地说 我有兴趣在 flutter 中使用 openlayers 库来创建具有各种绘图和编

随机推荐

  • scala 中的reduceLeft(或foldLeft)与reduceRight(或foldRight)

    我正在从 coursera 学习 scala 在里面reduceLeft and reduceRight描述如下 然后在下一张幻灯片上 老师说这个代码模式被抽象为reduceLeft 我的问题 我认为第一张幻灯片中的模式是reduceRig
  • 寻找包含当前节点的 jQuery find(..) 方法

    jQueryfind http api jquery com find 遍历方法不包括当前节点 它从当前节点的子节点开始 调用将当前节点包含在其匹配算法中的查找操作的最佳方法是什么 浏览文档并没有立即引起我的注意 对于 jQuery 1 8
  • Symfony2 php.ini

    当检查时app check php Symfony2说这个Configuration file used by PHP etc php5 cli php ini然而phpinfo 显示 Apache 正在使用 etc php5 apache
  • 如何让两个模型互相引用 Django

    我有以下代码 class Game models Model title models CharField max length 50 summery models CharField max length 500 key models I
  • Laravel 5 将数据从中间件传递到控制器

    我的中间件类似于Auth 它检查 URL 模式 例如 rest 然后在请求中查找令牌 从数据库中检索其相应的用户 之后 我想将该用户保存在一个变量中 以便稍后可以在以下任何控制器中返回该用户 最好的办法是什么 中间件 public func
  • LINQ 删除重复项和结果项以获得数量总和

    我只是想检查是否有更快的方法使用 LINQ 通过 id 从重复项中删除列表 但在结果列表项中将具有一些其他属性的总和 在本例中为价格 例如 起始列表 List
  • 通过 Open Graph API 以编程方式创建 Facebook 页面

    我希望有一种方法可以使用开放图 API 创建 Facebook 页面 该文档仅显示页面存在后我可以进行的 API 调用 目前 我的网站上有电影简介 我想在 Facebook 上为每个电影简介创建一个页面 我知道我可以添加 赞 按钮 一旦单击
  • @Transactional 和 AOP 之间的混淆

    Transactional 是否在 Spring 3 中替代了 AOP 它们相同吗 我可以说 Transactional在内部实现了AOP吗 The Transactionnal注释只是声明方法 或类的所有方法 是事务性的简单方法 Spri
  • 检测 MATLAB 帮助浏览器

    我想为大型 MATLAB 应用程序创建一些 HTML 文档 主要在 MATLAB 帮助浏览器 从 11b 开始的任何版本的 MATLAB 中 查看 这将有一些自定义 CSS 但没有什么非常复杂的 但是 我还希望在其他浏览器中可以查看相同的文
  • 如何创建一个 numpy 数组来描述三角形的顶点?

    我喜欢使用 Numpy 创建要传递到的顶点数组glsl Vertices将是一个包含 3 个顶点信息的 numpy 数组 Each vertex包括 pos x y 具有 32 位的 64 位有符号浮点格式 R 分量位于字节 0 3 中 3
  • 如何查看SQL Server 2008中表空间的总使用量?

    在 SQL server 2008 中 我如何 通过 SQL 查询 找到 SQL Server 2008 R2 的特定实例 或所有实例 的表空间使用百分比 另外 获取 SQL Server 的所有命名实例的列表的最佳方法 查询 是什么 这是
  • 如何在我的开发环境中管理多个版本的 Scala 和 SBT?

    我刚刚完成了很棒的 Coursera Scala 课程 并渴望通过探索一些现有的开源项目来继续了解有关 Scala 的更多信息 不过 我在尝试让其中一些在本地运行时遇到了障碍 我有 Ruby 背景 我们使用诸如rvm or rbenv在一个
  • Android 形状背景

    是否可以在 xml 中绘制一个形状 并使用 png 作为该形状的背景 我已经有了形状 它是一个带圆角的正方形 我想为该正方形添加背景 是的 您可以使用任何形状文件作为任何视图的背景 此示例创建圆形背景 形状周围有白色和黑色边框 样本 圆角
  • 护照验证不重定向

    我正在编写一个本地注册策略 发现它不起作用 所以我退后一步 尝试对我的空集合进行身份验证 每次我提交表单都会花费大约 30 40 秒的时间 直到导致超时 我确保调用了 Passport authenticate 但似乎它没有执行任何重定向
  • 在 Android 中初始化 Firebase crashlytics

    我已在我的 Android 项目中将 Fabric Crashlytics 迁移到 Firebase Crashlytics 在使用织物时 在活动课上我使用了以下线 Fabric with this new Crashlytics 但迁移后
  • 在 Java 7 和 8 中创建与现有列表不同的列表?

    如果我有 List
  • 如何使用 symfony 2.3 在 WebTestCase 中提交无效的选择选项

    我正在尝试在 symfony 2 3 中测试一个表单 该表单具有选择输入 以及文件上传 enctype multipart form data 选择输入如下 这是必填字段 有 3 个选项 1 2 3 使用 DomCrawler 我选择表单
  • 调试时会忽略依赖项 commons-logging:commons-logging:1.2,因为它可能与 Android 提供的内部版本冲突

    我收到以下警告 警告 依赖 commons logging commons logging 1 2 被忽略 调试 因为它可能与提供的内部版本冲突 安卓 如果出现问题 请用jarjar重新打包 更改类包 依赖项 commons logging
  • 如何获取 URL 中最后一个斜杠之后的所有内容?

    如何在 Python 中提取 URL 中最后一个斜杠后面的内容 例如 这些 URL 应返回以下内容 URL http www test com TEST1 returns TEST1 URL http www test com page T
  • openlayers:使用 MVT VectorTileSource 进行集群不可能吗?

    我是 openlayers 的新手 我想使用cluster矢量数据的函数 如果我指示为 这似乎不起作用source 在 Cluster 选项中 MVT VectorTileSource 代码如下 没有集群也能正常工作 不支持吗 谢谢 彼得