使用WMS作为源的OpenLayer 6.3.1中的MarkerClusters

问题描述

我正在使用OpenLayer版本6.3.1,并且想知道如何使用WMS数据源来执行MarkerClusters。

我的问题是我不知道如何将群集与WMS链接。 WMS源是point.shp(在几何上)

我试图用WMS替换群集源,但是它不起作用。

这是我的代码

var ImageWMS = new ImageWMS({  
  url: 'http://localhost:8080/geoserver/ACCESSOINSMADA/wms',params: {'LAYERS': 'ACCESSOINSMADA:csb2-pub','TILED': true},serverType: 'geoserver',transition: 0,});
var ImageLayers = new ImageLayer({
    source: ImageWMS,})

var distance = document.getElementById('distance');

var count = 20000;
var features = new Array(count);
var e = 3500000;
for (var i = 0; i < count; ++i) {
  var coordinates = [2 * e * Math.random() - e,2 * e * Math.random() - e];
  features[i] = new Feature(new Point(coordinates));
}

var source = new VectorSource({
  features: features,});

var clusterSource = new Cluster({
  distance: parseInt(distance.value,10),source: source,});

var styleCache = {};
var clusters = new VectorLayer({
  source: clusterSource,style: function (feature) {
    var size = feature.get('features').length;
    var style = styleCache[size];
    if (!style) {
      style = new Style({
        image: new CircleStyle({
          radius: 10,stroke: new Stroke({
            color: '#fff',}),fill: new Fill({
            color: '#3399CC',text: new Text({
          text: size.toString(),fill: new Fill({
            color: '#fff',});
      styleCache[size] = style;
    }
    return style;
  },});

解决方法

WMS输出通常是图像,因此您将无法更改数据并将其聚类到OpenLayers等客户端中;为此,您需要通过WFS来获取数据。

作为客户端中群集点的替代方法,可以将WMS配置为提供群集点。

有关示例,请参见:

WMS providing clustered points,shown in OpenLayers

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...