我有一个页面显示从 kml文件导入的矢量图层(基本上类似于sundials example)。它运行得非常好,既可以使用固定策略,也可以同时使用固定策略和CLUSTER策略。
我想创建一个混合显示,而“1个功能的群集”会显示原始的自定义图标例如,<Style><IconStyle><Icon><href>img/arrowRed.png
下的KML文件。
现在,如果我使用群集策略,则使用默认图标(黄色磁盘)显示1(特征)群集。
我宁愿不使用任何非标准openlayers的插件或库。 有什么建议吗?
使用群集的原始javascript代码的一部分下方(删除群集策略声明new OpenLayers.Strategy.Cluster()
并自定义图标显示正常):
var urlKMLClient = 'KMLClientsAll.kml';
var layerKMLClient = new OpenLayers.Layer.Vector("Clients", {
strategies: [new OpenLayers.Strategy.Fixed(), new OpenLayers.Strategy.Cluster(), refresh],
protocol: new OpenLayers.Protocol.HTTP({
url: urlKMLClient,
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true,
maxDepth: 2
})
})
});
请参阅客户端自定义图标(绿色标记)让位于
下方的群集默认图标(黄色磁盘)
答案 0 :(得分:3)
使用:new OpenLayers.Strategy.Cluster({threshold:2})
这允许他们不在群集中的孤立点。
(是GIS论坛中同一问题的答案重复)
答案 1 :(得分:0)
在this GIS question中找到了解决方案:
将群集策略更改为超过1.上述代码将变为:
var clusterStrategy = new OpenLayers.Strategy.Cluster({ distance: 35, threshold: 2 });
var urlKMLClient = 'KMLClientsAll.kml';
var layerKMLClient = new OpenLayers.Layer.Vector("Clients", {
strategies: [new OpenLayers.Strategy.Fixed(), clusterStrategy, refresh],
protocol: new OpenLayers.Protocol.HTTP({
url: urlKMLClient,
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true,
maxDepth: 2
})
})
});