如何为 mapbox 地图查询 json 对象 属性?
How to query json object property for a mapbox map?
我正在使用 Mapbox 制作一个等值线图,该地图会根据用户定义的日期发生变化。颜色基于给定 day
的 prob
。现在,我将 prob1 ... prob10
作为 geojson 中的属性传递,但我更希望有一个 prob
属性 包含一个我可以子集化的对象。
//initialize map on day 1
var day = 1;
//prepare color scale
function makeColorScale(d) {
return ([
'interpolate', ['linear'],
['get', 'prob' + d], // how to get object property here?
0, '#440154',
0.04, '#3B528B',
0.08, '#21908C',
0.25, '#5DC863',
0.4, '#FDE725',
1, '#696969'
])
};
map.addSource('county-data', {
type: 'geojson',
data: data
});
map.addLayer({
'id': 'counties-join',
'type': 'fill',
'source': 'county-data',
'paint': {
'fill-opacity': 0.3,
'fill-color': makeColorScale(day)
}
}, 'waterway-label' // ensures polygons are rendered above waterway-labels
);
我试过,例如在将对象 prob: {'1': 0.05, '2':0.01};
添加到我的 geojson 时修改为 ['get', 'prob.1']
,但这不起作用。
我没有试过这个,但我相信你可以通过使用这种形式的 ['get']
运算符来访问对象 属性 的属性:
["get", string, object]: value
因此,如果您的特征有一个看起来像 {'1': 0.05, '2': 0.01}
的 prob
属性,那么您可以像这样编写 makeColorScale()
函数:
function makeColorScale(d) {
return ([
'interpolate', ['linear'],
['get', String(d), ['get', 'prob']],
0, '#440154',
0.04, '#3B528B',
0.08, '#21908C',
0.25, '#5DC863',
0.4, '#FDE725',
1, '#696969'
])
};
我想。 ['get', 'prob']
获取对象,然后 ['get', String(d)]
在该对象中查找您想要的 属性。
我正在使用 Mapbox 制作一个等值线图,该地图会根据用户定义的日期发生变化。颜色基于给定 day
的 prob
。现在,我将 prob1 ... prob10
作为 geojson 中的属性传递,但我更希望有一个 prob
属性 包含一个我可以子集化的对象。
//initialize map on day 1
var day = 1;
//prepare color scale
function makeColorScale(d) {
return ([
'interpolate', ['linear'],
['get', 'prob' + d], // how to get object property here?
0, '#440154',
0.04, '#3B528B',
0.08, '#21908C',
0.25, '#5DC863',
0.4, '#FDE725',
1, '#696969'
])
};
map.addSource('county-data', {
type: 'geojson',
data: data
});
map.addLayer({
'id': 'counties-join',
'type': 'fill',
'source': 'county-data',
'paint': {
'fill-opacity': 0.3,
'fill-color': makeColorScale(day)
}
}, 'waterway-label' // ensures polygons are rendered above waterway-labels
);
我试过,例如在将对象 prob: {'1': 0.05, '2':0.01};
添加到我的 geojson 时修改为 ['get', 'prob.1']
,但这不起作用。
我没有试过这个,但我相信你可以通过使用这种形式的 ['get']
运算符来访问对象 属性 的属性:
["get", string, object]: value
因此,如果您的特征有一个看起来像 {'1': 0.05, '2': 0.01}
的 prob
属性,那么您可以像这样编写 makeColorScale()
函数:
function makeColorScale(d) {
return ([
'interpolate', ['linear'],
['get', String(d), ['get', 'prob']],
0, '#440154',
0.04, '#3B528B',
0.08, '#21908C',
0.25, '#5DC863',
0.4, '#FDE725',
1, '#696969'
])
};
我想。 ['get', 'prob']
获取对象,然后 ['get', String(d)]
在该对象中查找您想要的 属性。