图形绘制
图形绘制主要是使用esri/toolbars/draw
下的类,使用绘制功能时,需要先引入esri/toolbars/draw
,然后再初化一个画笔的工具。如下所示:
require(earis, function (Map, Navigation,Draw) {
self.map = new Map("map", config);
self.navToolbar = new Navigation(self.map);
self.drawToolBar = new Draw(self.map);//画笔工具
});
绘制形主要是通过原来activate
方法进行绘制。参数为图形的类型,主要包括以下几种:
-
ARROW
:绘制箭头。 -
CIRCLE
:绘制圆。 -
DOWN_ARROW
:绘制向下的箭头。 -
ELLIPSE
:绘制椭圆。 -
EXTENT
:绘制一个方框。 -
FREEHAND_POLYGON
:绘制多边形。 -
FREEHAND_POLYLINE
:绘制多个结点的线段。 -
LEFT_ARROW
:绘制向左的箭头。 -
LINE
:绘制一条直线。 -
MULTI_POINT
:绘制多个点。 -
POINT
:绘制一个点。 -
POLYGON
:绘制一个多边形。 -
POLYLINE
:绘制多个结点的线条。 -
RECTANGLE
:绘制矩形。 -
RIGHT_ARROW
:绘制向右的箭头。 -
TRIANGLE
:绘制三菜形。 -
UP_ARROW
:绘制向上的箭头。
绘制完成后,通过添加esri.toolbars.Draw
的draw-end
方法,将绘制好的图形添加到graphic
图层上。代码如下所示:
self.drawToolBar = new esri.toolbars.Draw(self.map);
self.drawToolBar.on("draw-end", addGraphicHandler);
self.initSymbol();
function addGraphicHandler(evt) {
self.addGraphic(evt)
}
/*
* 绘制监听函数
* */
this.addGraphic = function (evt) {
this.drawToolBar.deactivate();
this.map.enableMapNavigation();
var symbol;
if ( evt.geometry.type === "point" || evt.geometry.type === "multipoint") {
symbol = _markerSymbol;
} else if ( evt.geometry.type === "line" || evt.geometry.type === "polyline") {
symbol = _lineSymbol;
}else {
symbol = _fillSymbol;
}
this.map.graphics.add(new esri.Graphic(evt.geometry,symbol));
}
符号化
绘制图形的时候,可以自定义图形的一些样式,所有自定义样式的类全部在esri/symbols
下面。
图形绘制
绘制比较简单,只需传递一个参数到activate
方法中就行。以下封装了一些常用的绘制方法:
/*
* 绘制多点
* */
this.drawMultipoint = function () {
this.drawToolBar.activate('multipoint');
}
/*
* 绘制直线
* */
this.drawLine = function () {
this.drawToolBar.activate('line');
}
/*
* 绘制多线段拆线
* */
this.drawPolyline = function () {
this.drawToolBar.activate('polyline');
}
/*
* 绘制多边形
* */
this.drawPolygon = function () {
this.drawToolBar.activate('polygon');
}
/*
* 绘制圆形
* */
this.drawCircle = function () {
this.drawToolBar.activate('circle');
}
/*
* 绘制三角形
* */
this.drawTriangle = function () {
this.drawToolBar.activate('triangle');
}
/*
* 绘制矩形
* */
this.drawRectancle = function () {
this.drawToolBar.activate('extent');
}
/*e
* 绘制椭圆
* */
this.drawEllipse = function () {
this.drawToolBar.activate('ellipse');
}
/*
* 箭头
* */
this.drawArrow = function () {
this.drawToolBar.activate('arrow');
}
清除图形
调用map
中graphics
的clear()
方法,可以清空所有绘制的图层。
/*
* 清空绘制图层
* */
this.clearGraphic = function () {
this.map.graphics.clear();
}