近期在使用ArcGIS for Android的SDK进行移动端App开发,相信好多人在开发过程中都会遇到手绘点、线、面和距离、面积测量等常见GIS需求,对于ArcGIS for Android来说使用SketchEditor类会大大减少开发代码工作量,而且是官方的类和接口,稳定性也非常棒,参考Sample足以实现相关功能,官方Sample链接:https://developers.arcgis.com/android/latest/java/sample-code/sketch-editor/
但是在使用SketchEditor类绘制时,每次点击都是出现一个方块,非常难看!如何对手绘点、线、面和测距、测面积时绘制出来的图形样式进行修改呢?仔细看SDK文档会发现SketchEditor类中一个接口getSketchStyle(),
返回值类型为SketchStyle
,查看SDK文档讲得很明了,但是进行各种修改,进入绘图状态后点鼠标默认的那个小方块就是不会变。基本set接口都尝试了一遍,终于找到了修改编辑状态下的Symbol样式的接口,写此文章记录一下。
private void setSketchEditorStyle(SketchEditor editor){ SketchStyle style = editor.getSketchStyle();//这里一定是从editor里get出来的style,否则修改无效果。 SimpleMarkerSymbol marker = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 6); SimpleLineSymbol line = new SimpleLineSymbol(SimpleLineSymbol.Style.DASH, Color.YELLOW, 2); SimpleLineSymbol feedLine = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.RED, 2); SimpleMarkerSymbol midMarker = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.TRANSPARENT, 0); SimpleFillSymbol fillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.parseColor("#66FF0000"), line); SimpleFillSymbol feedFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.parseColor("#66FF0000"), feedLine);//透明度为40%的红色 style.setSelectedVertexSymbol(marker);//操作时点的样式 style.setMidVertexSymbol(midMarker);//画线或面时,线中间的点样式 //手绘时显示的样式 style.setVertexSymbol(marker); style.setLineSymbol(line); style.setFillSymbol(fillSymbol); //SketchEditor对象在Stop以后地图绘制的样式 style.setFeedbackVertexSymbol(marker); style.setFeedbackLineSymbol(feedLine); style.setFeedbackFillSymbol(feedFillSymbol); }