1
0

[mapbox]ExpressionでObjectArrayを参照する

Last updated at Posted at 2024-08-06

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)は色です

となります。

image.png

さらに、

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]]]]]

のようになります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0