2a10e568 by 刘远

jikai commit

1 parent d3efcda7
...@@ -2,50 +2,88 @@ import { loadModules } from "esri-loader"; ...@@ -2,50 +2,88 @@ import { loadModules } from "esri-loader";
2 import mapManage from './towMapObjects'; 2 import mapManage from './towMapObjects';
3 export default class DrawTool { 3 export default class DrawTool {
4 static getInstance() { 4 static getInstance() {
5 mapManage.drawTool || (mapManage.drawTool = new this()); 5 loadModules(["esri/symbols/PictureMarkerSymbol", "esri/layers/GraphicsLayer", "esri/views/draw/Draw"]).then((a) => {
6 mapManage.drawTool || (mapManage.drawTool = new this(a));
7 });
6 } 8 }
7 constructor() { 9 constructor() {
10 let arg = arguments[0];
8 this.view = mapManage.mapView; 11 this.view = mapManage.mapView;
9 this.map = mapManage.mapView.map; 12 this.map = mapManage.mapView.map;
10 this.active = !1; 13 this.active = !1;
11 this.polygon = null; 14 this.paths = [];
12 this.guids = []; 15 this.options1 || (this.options1 = {}, this.options1.pm = {
13 loadModules(["esri/symbols/PictureMarkerSymbol", "esri/layers/GraphicsLayer", "esri/views/draw/Draw"]).then(([w, z, d]) => { 16 type: 'simple-marker', color: [165, 42, 42, 0.7], width: "5px", height: "5px"
14 this.options1 || (this.options1 = {}, this.options1.pm = new w({
15 url: "", width: "", height: "", xoffset: 0, yoffset: 0
16 }));
17 this.map.add(this.graphicsLayer = new z({ id: "drawtool" }));
18 this.draw = new Draw({ view: this.view });
19 }); 17 });
18 this.map.add(this.graphicsLayer = new arg[1]({
19 id: "drawtool",
20 graphics: []
21 }));
22 this.draw = new arg[2]({ view: this.view });
20 } 23 }
21 activate(c, b) { 24 activate(c, b) {
22 this.active = !0; 25 this.active = !0;
23 this.drawType = c.toUpperCase(); 26 this.drawType = c.toUpperCase();
24 this.callback = b; 27 this.callback = b;
25 this.guids = [];
26 this.downCount = 0; 28 this.downCount = 0;
27 this.map.reorder(this.graphicsLayer, this.map.allLayers.length - 1); 29 // this.map.reorder(this.graphicsLayer, this.map.allLayers.length - 1);
28 switch (this.drawType) { 30 switch (this.drawType) {
29
30 case "POINT1": 31 case "POINT1":
31 loadModules(["esri/Graphic"]).then(([h, f]) => { 32 loadModules(["esri/Graphic", "esri/geometry/Point"]).then(([h, f]) => {
32 this.downCount = 0; 33 this.downCount = 0;
33 this.view.container.addEventListener('mousedown', b => { 34 let action = this.draw.create("point", {
34 var a = new h(b.offsetX, b.offsetY), a = this.view.toMap(a); 35 mode: "click"
35 console.log(a); 36 });
36 // this.graphic = new f(a, this.options1.pm, null); 37 action.on("draw-complete", event => {
37 // this.graphicsLayer.add(this.graphic); 38 !this.paths.length && this.graphicsLayer.graphics.add(this.graphic = new h({
38 // console.log('OKOKOK'); 39 geometry: this.construc({
39 // b.stopPropagation() 40 type: f,
41 vertices: event.vertices
42 }),
43 symbol: this.options1.pm
44 }));
45 this.paths.push(event.vertices[0]);
46 this.callback(event.vertices);
40 }); 47 });
41 }); 48 });
42
43 break; 49 break;
44 } 50 }
45 } 51 }
52 createPolyline() {
53 this.graphicsLayer.graphics.remove(this.graphic);
54 loadModules(["esri/Graphic", "esri/geometry/Polygon"]).then(([h, f]) => {
55 this.graphic = new h({
56 geometry: this.construc({
57 type: f,
58 rings: this.paths
59 }),
60 symbol: {
61 type: "simple-line",
62 color: [238, 44, 44, 0.8],
63 width: 2,
64 style: 'solid'
65 }
66 });
67 this.graphicsLayer.graphics.add(this.graphic);
68 });
69 }
46 deactivate() { 70 deactivate() {
47 this.active = !1; 71 this.active = !1;
48 this.drawType = ""; 72 this.drawType = "";
49 this.downCount = 0; 73 this.downCount = 0;
50 } 74 }
75 construc(arg) {
76 let settings = {
77 hasZ: false,
78 hasM: false,
79 spatialReference: this.view.spatialReference,
80 paths: arg.paths,
81 rings: arg.rings
82 };
83 arg.vertices && Object.assign(settings, {
84 x: arg.vertices[0][0],
85 y: arg.vertices[0][1]
86 });
87 return new arg.type(settings);
88 }
51 } 89 }
...\ No newline at end of file ...\ No newline at end of file
......