問題背景
API本身的遮罩層案例只能用于二維。不能在三維場景SceneView上通過遮罩凸顯想要表達的地理區域。二維下基于BaseLayerView2D開發,實現圖層的layereffect效果。
基于BaseLayerView2D開發
解決思路
想要在三維下實現遮罩層效果,可以使用幾何引擎,利用視圖范圍面幾何(或世界范圍面幾何) 與 想要高亮顯示的區域面幾何 做幾何分析difference。得到視圖范圍面幾何(或世界范圍面幾何)挖孔后的面,設置黑色,透明度。
關鍵代碼
查詢要素獲得想要高亮的面(結果可以是多個),將多個面合并(union)為一個幾何面。
將視圖范圍面(或世界范圍面) 與 上一步合并后的面做差異分析(difference)。得到結果clippedGeometry
設置面符號黑色,透明度70%,創建挖孔面作為遮罩層的Graphic,添加到視圖中。
完整代碼
https://codepen.io/dansdocker/pen/NWopjMZ
最終效果
SceneView下遮罩層的實現