!function(){
var layer;
window.connect = function(Param){
var param = Param || {};
var type = param.type;
var map = param.map;
var geometryService = param.geometryService;
var geometryServiceEvent = null;
var showPt = null;
var draw = new esri.toolbars.Draw(map);
draw.activate(type);
draw.on("draw-end",function(event){
draw.deactivate();
map.setMapCursor("default");
var measuregeometry = event.geometry;
var Color = dojo.Color;
var SimpleFillSymbol = esri.symbol.SimpleFillSymbol;
var SimpleLineSymbol = esri.symbol.SimpleLineSymbol;
var SimpleMarkerSymbol = esri.symbol.SimpleMarkerSymbol;
function outputDistance(result) {
var CurX = measuregeometry.paths[0][measuregeometry.paths[0].length - 1][0];
var CurY = measuregeometry.paths[0][measuregeometry.paths[0].length - 1][1];
var CurPos = new esri.geometry.Point(CurX, CurY, map.spatialReference);
map.infoWindow.setTitle("距离测量");
map.infoWindow.setContent(" 测 量 长 度 : <strong>" + result.lengths[0].toFixed(2)+ "千米</strong>");
map.infoWindow.show(CurPos);
}
function outputAreaAndLength(result) {
var CurX = (measuregeometry.cache._extent.xmax + measuregeometry.cache._extent.xmin) / 2;
var CurY = (measuregeometry.cache._extent.ymax + measuregeometry.cache._extent.ymin) / 2
var CurPos = new esri.geometry.Point(CurX, CurY, map.spatialReference);
map.infoWindow.setTitle("面积测量");
map.infoWindow.setContent(" 面积 : <strong>" + result.areas[0].toFixed(2)+ "平方千米</strong>");
map.infoWindow.show(CurPos);
}
var symbol;
switch (measuregeometry.type) {
case "polyline":{
var length = measuregeometry.paths[0].length;
symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2);
showPt = new esri.geometry.Point(measuregeometry.paths[0][length-1],map.spatialReference);
var lengthParams = new esri.tasks.LengthsParameters();
lengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_KILOMETER;
lengthParams.geodesic = true;
lengthParams.polylines = [measuregeometry];
geometryService.lengths(lengthParams);
dojo.connect(geometryService, "onLengthsComplete", outputDistance);
break;
}
case "polygon":{
symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.2]));
var areasAndLengthParams = new esri.tasks.AreasAndLengthsParameters();
areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_KILOMETER;
areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_SQUARE_KILOMETERS;
areasAndLengthParams.calculationType = "geodesic";
geometryService.project([measuregeometry], map.spatialReference, function (geometry) {
geometryService.simplify(geometry, function (simplifiedGeometries) {
areasAndLengthParams.polygons = simplifiedGeometries;
areasAndLengthParams.polygons[0].spatialReference = map.spatialReference;
geometryService.areasAndLengths(areasAndLengthParams);
});
});
dojo.connect(geometryService, "onAreasAndLengthsComplete", outputAreaAndLength);
break;
}
case "point":{
symbol = new SimpleMarkerSymbol();
symbol.setPath("M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.868,21.375h-1.969v-1.889h1.969V21.375zM16.772,18.094h-1.777l-0.176-8.083h2.113L16.772,18.094z");
symbol.setColor(new Color("#00FFFF"));
break;
}
}
var graphic = new esri.Graphic(measuregeometry, symbol);
if( !layer ){
layer = new esri.layers.GraphicsLayer();
map.addLayer(layer);
}
layer.add(graphic);
}.bind(this));
}
}()
connect({map: _map, geometryService:new esri.tasks.GeometryService("http://tdqq.gdagri.gov.cn/arcgis/rest/services/Utilities/Geometry/GeometryServer"),type: "polyline"})