以上是实现效果。
1、引入测距、测面需要的模块;
"esri/symbols/Font",
"esri/Color",
"esri/symbols/TextSymbol",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/toolbars/draw",
"esri/geometry/geometryEngine",
2、监听map的load事件,创建Draw()绘制对象;
var measureToolbar,lineSym,areaSym ;
map.on("load",function(evt){
measureToolbar = new Draw(map);
lineSym = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]),2);
areaSym = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,new
SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 0, 255]), 1),
new Color([255, 255, 0, 0.3]));
})
3、绑定相应的元素触发测距(绘制polyline)、测面(绘制polygon);
measureLenght: function() {
measureToolbar.activate(Draw.POLYLINE);
},
measureArea: function() {
measureToolbar.activate(Draw.POLYGON);
},
4、监听Draw()的绘制结束事件,通过回调获取到geometry进行处理;
dojo.connect(measureToolbar, "onDrawEnd", GetLenthorArea);
4.1 计算长度:取该线最后一个坐标点作为文本标注的点,设置文本为 改线的长度 ;
var centerPoint = geometry.getPoint(geometry.paths.length - 1, geometry.paths.length);
4.2 计算面积:取该多边形的中心点作为文本标注的点,设置为本为 该多边形的面积;
var centerPoint = geometry.getCentroid();