本来官方也提供了标注的例子,但是只有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即可控制。