arcgis runtime for android緩衝區分析實現技術路線
阿新 • • 發佈:2022-01-02
僅為技術路線,取自鄙人畢設成果(程式碼懶得去扒了),純憑記憶,細節可能有錯誤。當然該技術路線可能也不完美,但肯定可行。
首先緩衝區分析採用的是geometryengine.buffer(),這個方法具體怎麼用自己看API吧,這個方法的反正就是傳入要素集合、距離,應該是這樣,具體看API),他就會生成一個面狀多部件要素,這個多部件要素就是我們想要的一層緩衝區範圍,作為臨時顯示,推薦新增到graphicsoverlay中。
我們常用的效果多為多環緩衝區分析,因此,我們可以重複上述步驟,通過設定每一層的緩衝區距離,獲取到不同大小的多部件要素,儲存好第一步就算完成了。多環緩衝區分析的難點在於如何達到多環的效果,我通過調整顏色透明度實現,比如一個3環的緩衝區分析,我們給他傳入顏色的時候,設定透明度為0.3,那麼由於疊加效果,第一層緩衝區範圍會疊加三次也就是能達到0.9,第二層0.6,第三層也就是最外層為0.3,這樣我們就實現了多環的效果。所以在設定透明度時,我們可以通過
Color.argb(Math.round(255 / rank), 255, 0, 0)
實現,其中rank為環數。
忘得差不多了,還是開啟程式碼瞅了一眼,當時封裝了一個buffer工具類,下面這段是等距多環緩衝區分析,供參考,其餘的自己寫吧
public static void buffer(GraphicsOverlay mTempGraphicsOverlay, List<Geometry> geometryList, int rank, Double distance) {
List<Double> distanceIterable = new ArrayList<>();
for (int i = 0; i < rank+1; i++) {
distanceIterable.add(distance * i);
List<Polygon> polygonList = GeometryEngine.buffer(geometryList, distanceIterable, true);
for (Polygon polygon : polygonList) {
mTempGraphicsOverlay.getGraphics().add(new Graphic(polygon, SymbolStyle.getBufferSymbol(Color.argb(Math.round(255 / rank), 255, 0, 0))));
}
distanceIterable.clear();
}
}
核心寫完了,基本能實現了,細節突然又不想寫了,後面再補充吧,打遊戲去了。
本文來自部落格園,作者:季夏嘯華,轉載請註明原文連結:https://www.cnblogs.com/jiang2020/p/15754272.html