测距

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

 

posted @ 2019-02-14 15:03  blurs  阅读(328)  评论(0编辑  收藏  举报