arcgis runtime for android缓冲区分析实现技术路线
仅为技术路线,取自鄙人毕设成果(代码懒得去扒了),纯凭记忆,细节可能有错误。当然该技术路线可能也不完美,但肯定可行。
首先缓冲区分析采用的是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