import * as maptalks from '../../libs/maptalks'
import Geom from '../geom'
class EasyDrawTool {
/**
* 绘制工具类
* @constructor
* @param {Object} options 配置项
*/
constructor(options) {
this.drawTool = new maptalks.DrawTool(options)
}
/**
* 添加到地图
* @param {EasyMap} easyMap 地图对象
* @returns {EasyDrawTool}
*/
addTo(easyMap) {
this.drawTool.addTo(easyMap.map)
return this
}
/**
* 事件绑定
* @param {String} eventsOn 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
* @returns {*} 返回handler用于事件移除
*/
on(eventsOn, handler, context = null) {
const _handler = function(param) {
param.geometry = new Geom(param.geometry, param.geometry.type)
handler(param)
}
this.drawTool.on(eventsOn, _handler, context)
return _handler
}
/**
* 事件绑定,别名
* @param {String} eventsOn 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
* @returns {*} 返回handler用于事件移除
*/
addMapEventListener(eventsOn, handler, context = null) {
const _handler = function(param) {
param.geometry = new Geom(param.geometry, param.geometry.type)
handler(param)
}
this.drawTool.addEventListener(eventsOn, _handler, context)
return _handler
}
/**
* 单次事件绑定,调用一次后移除
* @param {String} eventTypes 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
once(eventTypes, handler, context = null) {
const _handler = function(param) {
param.geometry = new Geom(param.geometry, param.geometry.type)
handler(param)
}
this.drawTool.once(eventTypes, _handler, context)
}
/**
* 单次事件绑定,调用一次后移除,别名
* @param {String} eventTypes 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
addMapEventListenerOnce(eventTypes, handler, context = null) {
const _handler = function(param) {
param.geometry = new Geom(param.geometry, param.geometry.type)
handler(param)
}
this.drawTool.once(eventTypes, _handler, context)
}
/**
* 事件移除
* @param {String} eventsOff 要移除的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
un(eventsOff, handler, context = null) {
this.drawTool.off(eventsOff, handler, context)
}
/**
* 事件移除,别名
* @param {String} eventsOff 要移除的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
removeMapEventListener(eventsOff, handler, context = null) {
this.drawTool.removeEventListener(eventsOff, handler, context)
}
/**
* 启用绘图工具
* @returns {EasyDrawTool}
*/
enable() {
this.drawTool.enable()
return this
}
/**
* 禁用绘图工具
* @returns {EasyDrawTool}
*/
disable() {
this.drawTool.disable()
return this
}
/**
* 绘制点
*/
drawPointFeature() {
this.drawTool.setMode('Point').enable()
}
/**
* 绘制线
*/
drawLineStringFeature() {
this.drawTool.setMode('LineString').enable()
}
/**
* 绘制多边形
*/
drawPolygonFeature() {
this.drawTool.setMode('Polygon').enable()
}
/**
* 绘制圆
*/
drawCircleFeature() {
this.drawTool.setMode('Circle').enable()
}
/**
* 绘制矩形
*/
drawRectangleFeature() {
this.drawTool.setMode('Rectangle').enable()
}
}
export default EasyDrawTool