测距
!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"})