-1

我有一个页面显示从kml 文件导入的矢量图层(基本上就像日晷示例)。它运行得非常好,既可以仅使用固定策略,也可以同时使用固定策略和集群策略。

我想创建一个混合显示,而“包含 1 个功能的集群”将显示为包含在 KML 文件中的原始自定义图标<Style><IconStyle><Icon><href>img/arrowRed.png,例如。

现在,如果我使用集群策略,则使用默认图标(黄色磁盘)显示 1 个(功能)的集群。

我宁愿不使用任何不是标准开放层的插件或库。 有什么建议么?

下面是使用集群的原始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
            })
        })
    }); 

无集群

请参阅下面的客户端自定义图标(绿色标记)让位于集群默认图标(黄色磁盘)

带集群

4

2 回答 2

3

使用:new OpenLayers.Strategy.Cluster({threshold:2})这允许它们不在集群中的孤立点。

(是 GIS 论坛中同一问题的答案的重复)

于 2013-03-10T13:49:37.123 回答
0

在这个 GIS 问题中找到了解决方案:

将集群策略更改为 MORE THAN 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
            })
        })
    }); 
于 2013-03-08T22:01:36.913 回答