Openlayers 3 如何在openlayers 3中为topojson对象使用不同的颜色

Openlayers 3 如何在openlayers 3中为topojson对象使用不同的颜色,openlayers-3,topojson,Openlayers 3,Topojson,我有一个包含一组对象的topojson,比如level1、level2、level3: { 类型:拓扑, 变换:…, 对象:{ 第1级:{ id:level1, 类型:GeometryCollection, 几何图形:[ {类型:多边形,圆弧:[[0]]} ] }, 第二级:…, 第三级:…, }, 弧:… } 我想为不同的物体定义不同的颜色。我在openlayers 3中使用它作为向量层: 新ol.layer.Vector{ 来源:new ol.source.TopoJSON{ 预测:‘EPS

我有一个包含一组对象的topojson,比如level1、level2、level3:

{ 类型:拓扑, 变换:…, 对象:{ 第1级:{ id:level1, 类型:GeometryCollection, 几何图形:[ {类型:多边形,圆弧:[[0]]} ] }, 第二级:…, 第三级:…, }, 弧:… } 我想为不同的物体定义不同的颜色。我在openlayers 3中使用它作为向量层:

新ol.layer.Vector{ 来源:new ol.source.TopoJSON{ 预测:‘EPSG:3857’, url:my topojson的url }, 样式:functionfeature{ 返回新的ol.style.style{ 笔划:新的ol风格笔划{ 颜色:“09a7ee”, 宽度:1 } }; } } 我的想法是获取对象level1id并通过它或类似的方式选择颜色。但我不知道如何在style函数中获取属性id

... 样式:functionfeature{ var id=feature.get'id';//这不起作用 变量颜色={ “级别1”:“09a7ee”, “级别2”:“aaa7ee”, ... } 返回新的ol.style.style{ 笔划:新的ol风格笔划{ 颜色:颜色[id], 宽度:1 } }; } TopoJSON不存储组键,因此您必须从TopoJSON构建索引:

变量几何,几何; 对于response.objects中的var键{ 几何图形=响应。对象[键]。几何图形| |[]; 对于变量i=0,ii=geometrics.length;i 一旦有了它,就可以在styleFunction中执行类似的操作:

... 样式:functionfeature{ 变量颜色={ “级别1”:“09a7ee”, “级别2”:“aaa7ee”, ... }; var style=新的ol.style.style{ 笔划:新的ol风格笔划{ 宽度:1 } }; 变量样式=[style]; 返回函数特性{ var group=objectsByKey[feature.getId]; style.getStroke.setColorColor[组]; 返回样式; }; }