如何在openlayers 6中群集不同类型的几何体?

如何在openlayers 6中群集不同类型的几何体?,openlayers,openlayers-6,Openlayers,Openlayers 6,我需要对一些具有不同类型几何体(点、线串和多边形)的特征进行聚类, 哪种方法最好?此外,当我缩放到单个要素时,这是使用要素本身适当样式的最佳方式(如多边形、多边形等)。簇源必须具有处理非点要素的几何函数。最基本的方法是返回数据块中心的点 geometryFunction: functionfunction(feature) { return new Point(getCenter(feature.getGeometry().getExtent())); } 也可以使用标签点(线串的中点和多

我需要对一些具有不同类型几何体(点、线串和多边形)的特征进行聚类,
哪种方法最好?此外,当我缩放到单个要素时,这是使用要素本身适当样式的最佳方式(如多边形、多边形等)。

簇源必须具有处理非点要素的几何函数。最基本的方法是返回数据块中心的点

geometryFunction: functionfunction(feature) {
  return new Point(getCenter(feature.getGeometry().getExtent()));
}
也可以使用标签点(线串的中点和多边形的内部点)。对于样式设置,如果簇包含多个要素,但如果该簇包含该要素几何图形的单个要素样式,则样式功能应设置为簇样式

var clusterLayer = new Vectorlayer({
  source: new ClusterSource({
    distance: distance,
    source: vectorSource,
    geometryFunction: functionfunction(feature) {
      var geometry = feature.getGeometry();
      var type = geometry.getType();
      if (type == 'Point') {
        return geometry;
      if (type == 'LineString') {
        return new Point(geometry.getCoordinateAt(0.5));
      } else if (type == 'Polygon') {
        return geometry.getInteriorPoint();
      } else {
        return new Point(getCenter(feature.getGeometry().getExtent()));
      }
    }
  }),
  style: function(feature) {
    var features = feature.get('features');
    if (features.length > 1) {
      return clusterStyle;
    else {
      defaultStyles.setGeometry(features[0].getGeometry());
      return defaultStyles;
    }
  }
});

谢谢,它起作用了。