Openlayers 3 - 聚类和线条组合
Openlayers 3 - Clustering & Lines as a combination
我的目标是在视图中聚集许多坐标。这一点之间也可以有 "connections",我想将其显示为 LineString。
我尝试了很多,但找不到将 Lines 集成到 Cluster 中的方法。
我目前的(稳定)状态可以在这里看到:
Fiddle
var clusterSource = new ol.source.Cluster({
distance: 20,
source: vectorDevices
});
如果两个点 "merge" 进入集群,如果连接消失或者是集群本身的一部分,那就太好了。
谁能帮帮我?
我尝试将 vectorLine 作为源添加到 Cluster
fiddle
var clusterSource = new ol.source.Cluster({
distance: 20,
source: [vectorDevices, vectorLine]
});
或通过 addFeature
fiddle
clusterSource.addFeature(vectorLine);
我认为您目前无法向集群添加线路。 Openlayers 3(从 v 3.14.2 开始)聚类只允许您聚类点。如果你查看 ol.source.Cluster 的来源,有一个声明断言其中的所有特征都需要是点。
(来自 https://github.com/openlayers/ol3/blob/v3.14.2/src/ol/source/clustersource.js)
ol.source.Cluster.prototype.createCluster_ = function(features) {
var length = features.length;
var centroid = [0, 0];
for (var i = 0; i < length; i++) {
var geometry = features[i].getGeometry();
goog.asserts.assert(geometry instanceof ol.geom.Point,
'feature geometry is a ol.geom.Point instance');
var coordinates = geometry.getCoordinates();
ol.coordinate.add(centroid, coordinates);
}
ol.coordinate.scale(centroid, 1 / length);
var cluster = new ol.Feature(new ol.geom.Point(centroid));
cluster.set('features', features);
return cluster;
};
我认为最好的办法是在点聚集时以某种方式将线层的可见性更改为 false。
编辑:但是这可能会在下一版本的 ol 中发生变化,合并了一个拉取请求 (https://github.com/openlayers/ol3/pull/4917),其中有一个 geometryFunction 选项。
我的目标是在视图中聚集许多坐标。这一点之间也可以有 "connections",我想将其显示为 LineString。
我尝试了很多,但找不到将 Lines 集成到 Cluster 中的方法。
我目前的(稳定)状态可以在这里看到: Fiddle
var clusterSource = new ol.source.Cluster({
distance: 20,
source: vectorDevices
});
如果两个点 "merge" 进入集群,如果连接消失或者是集群本身的一部分,那就太好了。
谁能帮帮我?
我尝试将 vectorLine 作为源添加到 Cluster fiddle
var clusterSource = new ol.source.Cluster({
distance: 20,
source: [vectorDevices, vectorLine]
});
或通过 addFeature fiddle
clusterSource.addFeature(vectorLine);
我认为您目前无法向集群添加线路。 Openlayers 3(从 v 3.14.2 开始)聚类只允许您聚类点。如果你查看 ol.source.Cluster 的来源,有一个声明断言其中的所有特征都需要是点。 (来自 https://github.com/openlayers/ol3/blob/v3.14.2/src/ol/source/clustersource.js)
ol.source.Cluster.prototype.createCluster_ = function(features) {
var length = features.length;
var centroid = [0, 0];
for (var i = 0; i < length; i++) {
var geometry = features[i].getGeometry();
goog.asserts.assert(geometry instanceof ol.geom.Point,
'feature geometry is a ol.geom.Point instance');
var coordinates = geometry.getCoordinates();
ol.coordinate.add(centroid, coordinates);
}
ol.coordinate.scale(centroid, 1 / length);
var cluster = new ol.Feature(new ol.geom.Point(centroid));
cluster.set('features', features);
return cluster;
};
我认为最好的办法是在点聚集时以某种方式将线层的可见性更改为 false。
编辑:但是这可能会在下一版本的 ol 中发生变化,合并了一个拉取请求 (https://github.com/openlayers/ol3/pull/4917),其中有一个 geometryFunction 选项。