我正在使用 Mapbox GL 和 Turf.js 使用以下代码在地图上掩盖纽约市的行政区。首先,我得到了我想要显示的区域的边界框,扩展该框,turf.buffer()
然后使用turf.difference()
“剪切”出纽约市的形状,并用纯色填充留下的正空间以创建我的蒙版。
虽然这个掩码确实隐藏了“nyc-mask”层中存在的特征,但一些标签碰巧延伸到了未掩码的空间中。我希望能够隐藏在蒙面多边形内发现的所有特征。尽管这似乎有问题,因为两个空间中都会存在一些道路和水道,但我希望可能存在的任何解决方案都可以让我只过滤文本特征。
nycBounds = turf.bbox(nycFeature)
nycPoly = turf.bboxPolygon(nycBounds)
nycBoundsBuffer = turf.buffer(nycPoly, 20, 'miles')
nycPolyBuffer = turf.buffer(nycPoly, 100, 'miles')
mask = turf.difference(nycPolyBuffer, nycFeature)
map.setMaxBounds(turf.bbox(nycBoundsBuffer))
map.addSource('nyc-mask', {
'type': 'geojson',
'data': mask
})
map.addLayer({
'id': 'nyc-mask',
'type': 'fill',
'source': 'nyc-mask',
'paint': {
'fill-color': '#addef0'
'fill-opacity': 0.999
}
}
})
这必须是可能的,我只是还没有找到任何可以开始前进的东西......