九、ArcGIS Runtime SDK for iOS 100.X教程系列之地图标注草图

本来官方也提供了标注的例子,但是只有swift版本,先贴链接吧:

https://developers.arcgis.com/ios/latest/swift/sample-code/sketch-on-map/

接下来就简单的使用ObjectC介绍一下主要用法,其实很简单,主要就是使用AGSSketchEditor类对地图进行标注,绘制各种形状,支持的类型非常多,在调用api激活地图的编辑模式后,地图的点击事件全权会交由AGSSketchEditor掌管,也就是地图的TouchDelegate将不会回调,直到AGSSketchEditor结束编辑,AGSSketchEditor支持的编辑形状如下:

typedef NS_ENUM(NSInteger, AGSSketchCreationMode) {
    AGSSketchCreationModeUnset = -1,            /*!< 不设置 */
    AGSSketchCreationModePoint,                 /*!< 点 */
    AGSSketchCreationModeMultipoint,            /*!< 多个点  */
    AGSSketchCreationModePolyline,              /*!< 线 */
    AGSSketchCreationModePolygon,               /*!< 面 */
    AGSSketchCreationModeFreehandPolyline,      /*!< 涂鸦线*/
    AGSSketchCreationModeFreehandPolygon,       /*!< 涂鸦面 */
    AGSSketchCreationModeRectangle,             /*!< 四方形 */
    AGSSketchCreationModeEllipse,               /*!< 圆形 */
    AGSSketchCreationModeTriangle,              /*!< 三角形 */
    AGSSketchCreationModeArrow,                 /*!< 箭头 */
};

AGSSketchEditor对象调用startWithCreationMode:方法即可开始编辑草图,主要方法有以下两个:

//直接通过类型启动草图模式
-(BOOL)startWithCreationMode:(AGSSketchCreationMode)creationMode;

//通过已有的形状创建草图模式,类型最好自己指定
-(BOOL)startWithGeometry:(nullable AGSGeometry*)geometry
            creationMode:(AGSSketchCreationMode)creationMode;

当然,AGSSketchEditor对象在创建后需要赋值给AGSMapView对象的sketchEditor属性,编辑过程中的形状发生变化的回调通过通知AGSSketchEditorGeometryDidChangeNotification发出,编辑中的形状为AGSSketchEditor对象的geometry属性值,通过监听该通知可以做一些额外的动作。

另外AGSSketchEditor类提供了撤回和重做的方法调用,通过其属性undoManager即可控制。

猜你喜欢

转载自blog.csdn.net/qq_31672459/article/details/103166594