2013-03-08 32 views
-1

我有一个显示从KML文件(基本上象的sundials example)导入的矢量层的页面。它可以很好地工作,既可以使用固定策略,也可以同时使用固定策略和CLUSTER策略。的OpenLayers群集策略 - 显示自定义图标为1个特征簇

我想创建混合显示器,而“的1个特征簇”将与<Style><IconStyle><Icon><href>img/arrowRed.png下包含在KML文件中的原始自定义图标,例如被显示。

现在,如果我使用群集策略,使用默认图标(黄色磁盘)显示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 
      }) 
     }) 
    }); 

WITHOUT CLUSTER

看到客户端自定义图标(绿色标志)让位于以下集群默认图标(黄色磁盘)

WITH CLUSTER

回答

3

用途:new OpenLayers.Strategy.Cluster({threshold:2})这使得萨德孤立点他们不是在一个集群。

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

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 
      }) 
     }) 
    });