当前位置: 首页 > 知识库问答 >
问题:

特征集合中每个特征的不同颜色

闻人思聪
2023-03-14

我用openlayers 3在地图中上传了一个geojson文件。geojson文件是一个FeatureCollection,具有LineString类型的5个功能。如何为每个功能添加不同的颜色以区分路径?如果我将颜色添加到geojson文件的样式中,则不会读取该文件,如果我将颜色添加到笔划中,则所有功能都以单一颜色着色。

下面我添加代码

谢谢

var vector = new ol.layer.Vector({
            source: new ol.source.Vector({
                format: new ol.format.GeoJSON(),
                url: 'http://localhost/joggo_wp/percorsi.geojson'
            }),
            style: new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: "#ff000",
                    width: 2.5,                     
                })
            }),     
        });

文件GEOJSON:

{

"type":"FeatureCollection","crs":{"type":"name","属性":{"name":"urn: ogc: def: crs: EPSG::4326 " } }, "特性": [ { "type":"Feature","属性":{"ID": 1.0,"LUNGH_M": 1970.0,"NOME:Percorso 1,PARTENZA:Via del Poggio Imperiale 4,ARRIVO:Via di S. Leonardo 59n,LUNGHEZZA:1,97 km},样式:{颜色:#ff0000},几何:{类型:LineString,坐标": [ [ 11.24203700040032, 43.759969754752376]、[11.247204649917521, 43.750208064502473]、[11.247446659153409, 43.750240561464494]、[11.247746238597509, 43.750179530458503]、[11.247960306028226, 43.750118937742307]、[11.248108264989046, 43.749966781403657 ], [ 11.248240378523741, 43.749814084940027 ], [ 11.248897533371567, 43.75006527742493],[11.249140299088037, 43.750277668555015],[11.250198620263028, 43.751078552926899],[11.250259518649738, 43.751623211022611],[11.250562891152564, 43.751940055106814],[11.250844806161599, 43.752116454510677],[11.250976903611187, 43.752184285854881],[11.251025276742347, 43.752394633135999],[11.251095944135562, 43.752551715399683],[11.252075754111447, 43.753064192693351],[11.252260569522404, 43.753162663730734],[11.252298216347477, 43.753302788154329],[11.252042422884459,43.753607171300693],[11.252089750740879,43.754005360713535],[11.252046702595303,43.754152945071198],[11.251940462780629,43.754342861090443],[11.251887408111035,43.754762904036816]]},.........

共有1个答案

颜高格
2023-03-14

您需要创建一个样式函数来处理这种情况。

所以让你的风格发挥作用:

 var styleFunction = function(feature) {
       console.log(feature);
     //now you can use any property of your feature to identify the different colors
     //I am using the ID property of your data just to demonstrate
      var color;
      if (feature.get("ID")==1){
      color = "red";
      } else if (feature.get("ID")==2){
      color = "green";
      } else {
     color = "black"; 
      }

      var retStyle =   new ol.style.Style({
          stroke: new ol.style.Stroke({ 
            color: color,
            width: 5
          })
        });
       return retStyle;

      };

然后把这个函数分配给你的矢量图层的样式

var vector = new ol.layer.Vector({
            source: new ol.source.Vector({
                format: new ol.format.GeoJSON(),
                url: 'http://localhost/joggo_wp/percorsi.geojson'
            }),
            style: styleFunction     
        });

这里有一把小提琴

 类似资料:
  • 我对Java和OOP都是新手。但是,我使用notify读取一个特征,然后使用read读取回调中的多个特征。 我想知道,为什么在使用readCharacteristic(我的特征)时,只能从单个特征(除了通知的特征)中获取值。蓝牙gatt回调声明如下: 公共布尔值 (BluetoothGattCharacteristic characteristic characteristic)从相关远程设备读取

  • 将跟踪和跨度添加到Slf4J MDC,以便您可以从日志聚合器中的给定跟踪或跨度中提取所有日志。示例日志: 2016-02-02 15:30:57.902 INFO [bar,6bfd228dc00d216b,6bfd228dc00d216b,false] 23030 --- [nio-8081-exec-3] ... 2016-02-02 15:30:58.372 ERROR [bar,6bfd

  • 反缓存 anticache设置该选项后,它将删除可能引起服务器响应的Header(if-none-match和if-modified-since)304 not modified。当您要确保完全捕获HTTP交换时,这很有用。当您要确保服务器以完整的数据响应时,也经常在客户端重播期间使用它。 客户端重播 客户端重播可以做到:您提供了一个以前保存的HTTP对话,而mitmproxy则一个接一个地重播了

  •   特征缩放是用来统一资料中的自变项或特征范围的方法,在资料处理中,通常会被使用在资料前处理这个步骤。 1 动机   因为在原始的资料中,各变数的范围大不相同。对于某些机器学习的算法,若没有做过标准化,目标函数会无法适当的运作。举例来说,多数的分类器利用两点间的距离计算两点的差异, 若其中一个特征具有非常广的范围,那两点间的差异就会被该特征左右,因此,所有的特征都该被标准化,这样才能大略的使各特征

  • 我当前的Cucumber文件如下所示: 所以现在我想再添加几个场景,可能是在同一个文件中进行API测试。所以我想为此创建一个新特性,而不是使用Feature:Test Online application页面。这样我就不需要为API测试创建单独的特性文件。