在 deck.gl GeojsonLayer 中,如何隐藏单个多边形?
In a deck.gl GeojsonLayer, how can I hide individual polygons?
我的 deck.gl 地图中有一个多边形 GeoJSON layer。为了避免在许多用户交互中重新加载许多多边形,我想预加载所有多边形然后更改它们的可见性。我试图通过将填充颜色(以及线条颜色和线条宽度,但它隐藏在函数中)设置为 null 来实现这一点,具体取决于多边形属性。
new deck.GeoJsonLayer({
id: 'polygon-layer',
data: family,
pickable: true,
getPosition: d => d.geometry.coordinates,
filled: true,
getFillColor: d => show(d) ? hexToIntColor(d.properties.color) : null,
lineWidthUnits: "pixels",
getLineWidth: highlighted,
getLineColor: highlighedColor,
lineWidthMinPixels: 1,
visible: true,
onClick: displayProperties,
updateTriggers: {
getLineWidth: [highlightedMap, highlightedCode],
getLineColor: [highlightedMap, highlightedCode],
getFillColor: [highlightedMap, highlightedCode]
}
})
结果与我的预期大相径庭
如何设置不显示单个多边形? (我看到的这些奇怪的黑色渐变是从哪里来的,而不仅仅是从背景地图上看到粉红色和海岸线?)
尝试使用DataFilterExtension,将filterRange
设置为[1, 1]
意味着只有满足条件(1)的实体才会被渲染,而不是(0):
new deck.GeoJsonLayer({
...
getFilterValue: (d) => Number(show(d)),
filterRange: [1, 1],
extensions: [new DataFilterExtension({ filterSize: 1 })],
updateTriggers: {
getFilterValue: [yourTrigger]
}
});
我的 deck.gl 地图中有一个多边形 GeoJSON layer。为了避免在许多用户交互中重新加载许多多边形,我想预加载所有多边形然后更改它们的可见性。我试图通过将填充颜色(以及线条颜色和线条宽度,但它隐藏在函数中)设置为 null 来实现这一点,具体取决于多边形属性。
new deck.GeoJsonLayer({
id: 'polygon-layer',
data: family,
pickable: true,
getPosition: d => d.geometry.coordinates,
filled: true,
getFillColor: d => show(d) ? hexToIntColor(d.properties.color) : null,
lineWidthUnits: "pixels",
getLineWidth: highlighted,
getLineColor: highlighedColor,
lineWidthMinPixels: 1,
visible: true,
onClick: displayProperties,
updateTriggers: {
getLineWidth: [highlightedMap, highlightedCode],
getLineColor: [highlightedMap, highlightedCode],
getFillColor: [highlightedMap, highlightedCode]
}
})
结果与我的预期大相径庭
如何设置不显示单个多边形? (我看到的这些奇怪的黑色渐变是从哪里来的,而不仅仅是从背景地图上看到粉红色和海岸线?)
尝试使用DataFilterExtension,将filterRange
设置为[1, 1]
意味着只有满足条件(1)的实体才会被渲染,而不是(0):
new deck.GeoJsonLayer({
...
getFilterValue: (d) => Number(show(d)),
filterRange: [1, 1],
extensions: [new DataFilterExtension({ filterSize: 1 })],
updateTriggers: {
getFilterValue: [yourTrigger]
}
});