mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 01:04:17 +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);
 | 
						|
    }
 | 
						|
  };
 | 
						|
})();
 |