|
50 | 50 | :map-style="mapStyle" |
51 | 51 | :zoom="mapZoom" |
52 | 52 | :center="outerCenter" |
53 | | - :crs="mapCrs"> |
| 53 | + :crs="mapCrs" |
| 54 | + v-on:load="handleMapLoad" |
| 55 | + > |
54 | 56 | <mapbox-igs-tdt-layer |
55 | 57 | :layer="layer" |
56 | 58 | :layer-id="layerId" |
|
124 | 126 | component.enableMeasure(); |
125 | 127 | } |
126 | 128 | }, |
| 129 | + handleMapLoad(payload) { |
| 130 | + this.map = payload.map; |
| 131 | + }, |
127 | 132 | handleAdded(e, data) { |
| 133 | + const vm = this; |
128 | 134 | let { measure, map } = e; |
129 | 135 | this.measure = measure; |
| 136 | + vm.map.on('draw.selectionchange', (e) => { |
| 137 | + const { features, points } = e; |
| 138 | + const hasLine = (features && (features.length > 0)); |
| 139 | + const hasPoints = (points && (points.length > 0)); |
| 140 | + if (hasLine && ! hasPoints) { |
| 141 | + // line clicked |
| 142 | + if (vm.measure.getMode() !== 'direct_select') { |
| 143 | + vm.measure.changeMode('direct_select', { featureId: features[0].id }); |
| 144 | + } |
| 145 | + } else if (hasLine && hasPoints) { |
| 146 | + // line vertex clicked |
| 147 | + } else if (! hasLine && ! hasPoints) { |
| 148 | + // deselected |
| 149 | + } |
| 150 | + }); |
130 | 151 | }, |
131 | 152 | handleCreate(e) { |
132 | 153 | // this.measure && this.measure.deleteAll(); |
133 | 154 | console.log('绘制结果', e); |
| 155 | + this.disableDrag(); |
134 | 156 | }, |
135 | 157 | handleMeasure(e) { |
136 | 158 | console.log('测量结果', e); |
| 159 | + this.disableDrag(); |
137 | 160 | const {center, perimeter, area} = e; |
138 | 161 | const coords = center.geometry.coordinates; |
139 | 162 | this.coordinates = coords; |
|
151 | 174 | this.coordinates = []; |
152 | 175 | this.measureMode = "measure-area"; |
153 | 176 | this.measure && this.measure.changeMode('draw_polygon'); |
| 177 | + }, |
| 178 | + disableDrag() { |
| 179 | + const vm = this; |
| 180 | + vm.map.on('draw.selectionchange', (e) => { |
| 181 | + const { features, points } = e; |
| 182 | + const hasLine = (features && (features.length > 0)); |
| 183 | + const hasPoints = (points && (points.length > 0)); |
| 184 | + if (hasLine && ! hasPoints) { |
| 185 | + // line clicked |
| 186 | + if (vm.measure.getMode() !== 'direct_select') { |
| 187 | + vm.measure.changeMode('simple_select', { featureIds: [] }) |
| 188 | + // vm.measure.changeMode('direct_select', { featureId: features[0].id }); |
| 189 | + } |
| 190 | + } else if (hasLine && hasPoints) { |
| 191 | + // line vertex clicked |
| 192 | + } else if (! hasLine && ! hasPoints) { |
| 193 | + // deselected |
| 194 | + } |
| 195 | + }); |
154 | 196 | } |
155 | 197 | } |
156 | 198 | }); |
|
0 commit comments