suerprisePlus
2024-12-17 5dfcbd19cd041e1f8a5fb7ed9ab694bf4de00352
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
"use strict";
 
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;
 
var turf = _interopRequireWildcard(require("@turf/turf"));
 
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
 
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 
var mapRoam = {
  coord: [[123.13255714786649, 23.067683098974722], [122.93636587570226, 23.188425587402776], [122.73982043428656, 23.308924483009175], [122.54291884301844, 23.429177925979], [122.34565912727214, 23.549184049216148], [122.14803931858805, 23.668940978328354], [121.95005745486677, 23.78844683161317], [121.7517115805666, 23.90769972004486], [121.61410438678931, 23.99015603989342]],
  entityModel: null,
  url: 'http://localhost/Model/model/Cesium_Air.glb',
  // 两点插值去重
  getTurfLineChunk: function getTurfLineChunk() {
    var line = turf.lineString([[123.13255714786649, 23.067683098974722], [121.61410438678931, 23.99015603989342]]);
    var chunk = turf.lineChunk(line, 15, {
      units: 'miles'
    });
    var val = turf.cleanCoords(line).geometry.coordinates;
    var std = [];
    chunk.features.filter(function (item) {
      for (var i in item.geometry.coordinates) {
        std.push(item.geometry.coordinates[i]);
      }
    });
    var line = turf.lineString(std);
  },
  startRoam: function startRoam() {
    this.trackView();
  },
  closeRoam: function closeRoam() {
    if (this.entityModel == null) return;
    Viewer.clock.shouldAnimate = false;
    Viewer.entities.removeAll();
    this.entityModel = null;
  },
  trackView: function trackView() {
    var myPositions = this.coord;
    Viewer.clock.shouldAnimate = true;
    var start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25, 16));
    var stop = Cesium.JulianDate.addSeconds(start, this.coord.length - 1, new Cesium.JulianDate());
    Viewer.clock.startTime = start.clone();
    Viewer.clock.stopTime = stop.clone();
    Viewer.clock.currentTime = start.clone();
    Viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
    Viewer.clock.multiplier = 1;
    var position = computeCirclularFlight();
    this.entityModel = Viewer.entities.add({
      availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
        start: start,
        stop: stop
      })]),
      position: position,
      orientation: new Cesium.VelocityOrientationProperty(position),
      model: {
        uri: this.url,
        minimumPixelSize: 64,
        scale: 0.5
      },
      path: {
        resolution: 1,
        material: new Cesium.PolylineGlowMaterialProperty({
          glowPower: 0.1,
          color: Cesium.Color.RED
        }),
        width: 16
      }
    });
    this.entityModel.model.show = true;
 
    function computeCirclularFlight() {
      var property = new Cesium.SampledPositionProperty();
      property.setInterpolationOptions({
        interpolationDegree: 2,
        interpolationAlgorithm: Cesium.HermitePolynomialApproximation
      });
 
      for (var i = 0; i < myPositions.length; i++) {
        var time = Cesium.JulianDate.addSeconds(start, i, new Cesium.JulianDate());
        var position = Cesium.Cartesian3.fromDegrees(myPositions[i][0], myPositions[i][1], 5);
        property.addSample(time, position);
      }
 
      return property;
    }
  }
};
var _default = mapRoam;
exports["default"] = _default;