我们使用带有ol-ext扩展的OpenLayers 4.6.4来显示漂亮的集群。到目前为止,这一切都很好,但我们需要用自定义信息链接每个集群(比如在集群对象中放入一个简单的字段(,一旦集群在地图上被点击,我就想用回调中提供的参数来检索它。
我找不到一个简单的例子来将自定义字段放在集群中,并在地图上单击后检索它们。
我添加侦听器的事件由ol.interaction.SelectCluster从ol-ext 处理
有什么想法吗?
您无法如此容易地更改集群特性,但实际上这并不是获取有关它的信息所必需的
集群只是一个层源,它集群(谁会猜到(一个底层源。它会创建Features,而Features又将所表示的Features存储在特性features
中。
ol-ext示例演示了如何读取包含的功能:
var selectCluster = new ol.interaction.SelectCluster(.....);
selectCluster.getFeatures().on(['add'], function (e)
{ var c = e.element.get('features');
if (c.length==1)
{ var feature = c[0];
$(".infos").html("One feature selected...<br/>(id="+feature.get('id')+")");
}
else
{ $(".infos").text("Cluster ("+c.length+" features)");
}
})
在没有任何交互的情况下,你可以这样做:
map.on('singleclick', function(evt) {
const feature = map.forEachFeatureAtPixel(
evt.pixel,
function(someFeature){ return someFeature; }, // stop at the very first feature
);
const containedFeatures = feature.get('features');
});