mapboxのExpressionsで、
'paint': {
'fill-color': '#ff0',
'fill-outline-color': '#ffF',
'fill-opacity': 0.5,
}
の'fill-color'
の部分を、直接'#ffF'
を指定するのではなく、
const fillObjs3 = [{"code":"1","fillCol":"#f00"},{"code":"2","fillCol":"#0f0"},{"code":"3","fillCol":"#00f"}];
のfillObjs3[1].fillCol
に置き換えたいとします。
'fill-color': ["to-color",["get","fillCol",["object",["at",1,["literal",fillObjs3]]]]],
こうなります。
["to-color",["get","fillCol",["object",["at",1,["literal",fillObjs3]]]]],
を内側から分解していくと、
[ "literal",fillObjs3 ] : fillObjs3
はObjectArrayです
[ "at",1, fillObjs3 ] : fillObjs3[1]
を取り出します(={"code":"2","fillCol":"#0f0"})
[ "object", fillObjs3[1] ] : fillObjs3[1]
はオブジェクトです
["get","fillCol",fillObjs3[1]] : fillObjs3[1].fillCol
を取り出します(="#0f0")
["to-color",fillObjs3[1].fillCol ] : fillObjs3[1].fillCol
(#0f0)は色です
となります。
さらに、
if( {src[idx].}properties["work"].fillId!=0)
の場合は
["!=",0,["get","fillId",["object",["get","work"]]]]
geojson外のデータmesh1kmWorkを参照する場合、
if(mesh1kmWork[idx].fillId!=0)
は
["!=",0,["get","fillId",["object",["at",["get","idx"],["literal",mesh1kmWork]]]]]
のようになります。