mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-03 16:54:16 +00:00 
			
		
		
		
	
		
			
	
	
		
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/*!
							 | 
						||
| 
								 | 
							
								 * 	   Copyright (c) 2019 CARTO.
							 | 
						||
| 
								 | 
							
								 *     github: https://github.com/CartoDB/mapboxgl-draw-rectangle-drag
							 | 
						||
| 
								 | 
							
								 *     license: MIT License
							 | 
						||
| 
								 | 
							
								 *     version: 1.0.1
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								var mapboxGLDrawRectangleDrag = (function () {
							 | 
						||
| 
								 | 
							
								  'use strict';
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    onSetup() {
							 | 
						||
| 
								 | 
							
								      const t = this.newFeature({ type: 'Feature', properties: {}, geometry: { type: 'Polygon', coordinates: [[]] } });
							 | 
						||
| 
								 | 
							
								      var e;
							 | 
						||
| 
								 | 
							
								      return (
							 | 
						||
| 
								 | 
							
								        this.addFeature(t),
							 | 
						||
| 
								 | 
							
								        this.clearSelectedFeatures(),
							 | 
						||
| 
								 | 
							
								        this.updateUIClasses({ mouse: 'add' }),
							 | 
						||
| 
								 | 
							
								        this.setActionableState({ trash: !0 }),
							 | 
						||
| 
								 | 
							
								        (e = this),
							 | 
						||
| 
								 | 
							
								        setTimeout(() => {
							 | 
						||
| 
								 | 
							
								          const { map: t } = e,
							 | 
						||
| 
								 | 
							
								            a = t && t.doubleClickZoom;
							 | 
						||
| 
								 | 
							
								          t && a && a.disable();
							 | 
						||
| 
								 | 
							
								        }, 0),
							 | 
						||
| 
								 | 
							
								        { rectangle: t }
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    onMouseDown(t, e) {
							 | 
						||
| 
								 | 
							
								      e.preventDefault();
							 | 
						||
| 
								 | 
							
								      const a = [e.lngLat.lng, e.lngLat.lat];
							 | 
						||
| 
								 | 
							
								      (t.startPoint = a), t.rectangle.updateCoordinate('0.0', t.startPoint[0], t.startPoint[1]);
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    onDrag(t, e) {
							 | 
						||
| 
								 | 
							
								      t.startPoint &&
							 | 
						||
| 
								 | 
							
								        (t.rectangle.updateCoordinate('0.1', e.lngLat.lng, t.startPoint[1]),
							 | 
						||
| 
								 | 
							
								        t.rectangle.updateCoordinate('0.2', e.lngLat.lng, e.lngLat.lat),
							 | 
						||
| 
								 | 
							
								        t.rectangle.updateCoordinate('0.3', t.startPoint[0], e.lngLat.lat),
							 | 
						||
| 
								 | 
							
								        t.rectangle.updateCoordinate('0.4', t.startPoint[0], t.startPoint[1]));
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    onMouseUp(t, e) {
							 | 
						||
| 
								 | 
							
								      (t.endPoint = [e.lngLat.lng, e.lngLat.lat]),
							 | 
						||
| 
								 | 
							
								        this.updateUIClasses({ mouse: 'pointer' }),
							 | 
						||
| 
								 | 
							
								        this.changeMode('simple_select', { featuresId: t.rectangle.id });
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    onStop(t) {
							 | 
						||
| 
								 | 
							
								      var e;
							 | 
						||
| 
								 | 
							
								      (e = this),
							 | 
						||
| 
								 | 
							
								        setTimeout(() => {
							 | 
						||
| 
								 | 
							
								          const t = e._ctx && e._ctx.store,
							 | 
						||
| 
								 | 
							
								            a = e.map && e.map;
							 | 
						||
| 
								 | 
							
								          (a || t.getInitialValue) && t.getInitialConfigValue('doubleClickZoom') && a.doubleClickZoom.enable();
							 | 
						||
| 
								 | 
							
								        }, 0),
							 | 
						||
| 
								 | 
							
								        this.updateUIClasses({ mouse: 'none' }),
							 | 
						||
| 
								 | 
							
								        this.getFeature(t.rectangle.id) &&
							 | 
						||
| 
								 | 
							
								          (t.rectangle.removeCoordinate('0.4'),
							 | 
						||
| 
								 | 
							
								          t.rectangle.isValid()
							 | 
						||
| 
								 | 
							
								            ? this.map.fire('draw.create', { features: [t.rectangle.toGeoJSON()] })
							 | 
						||
| 
								 | 
							
								            : (this.deleteFeature([t.rectangle.id], { silent: !0 }),
							 | 
						||
| 
								 | 
							
								              this.changeMode('simple_select', {}, { silent: !0 })));
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    onTrash(t) {
							 | 
						||
| 
								 | 
							
								      this.deleteFeature([t.rectangle.id], { silent: !0 }), this.changeMode('simple_select');
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    toDisplayFeatures(t, e, a) {
							 | 
						||
| 
								 | 
							
								      const n = e.properties.id === t.rectangle.id;
							 | 
						||
| 
								 | 
							
								      (e.properties.active = n.toString()), n ? t.startPoint && a(e) : a(e);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								})();
							 |