viewer.entities.removeById("crossanalysis");
if (handler) {
handler.destroy();
}
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
var positions = [];
var poly = undefined;
var wallPoly = (function () {
function _(positions) {
this.options = {
id:"crossanalysis",
type: "crossanalysis",
wall: {
positions: [],
minimumHeights: [0.0, 0.0],
material: Cesium.Color.BLACK.withAlpha(0.8)
}
};
this.positions = positions;
this._init();
}
_.prototype._init = function () {
var _self = this;
var _update = function () {
var dp=[];
for (var i = 0; i < _self.positions.length; i++) {
var ellipsoid = viewer.scene.globe.ellipsoid;
var cartesian3 = new Cesium.Cartesian3(positions[i].x, positions[i].y, positions[i].z);
var cartographic = ellipsoid.cartesianToCartographic(cartesian3);
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var lng = Cesium.Math.toDegrees(cartographic.longitude);
var alt = cartographic.height;
dp.push(lng); dp.push(lat); dp.push(200);
}
return Cesium.Cartesian3.fromDegreesArrayHeights(dp);//_self.positions;
};
this.options.wall.positions = new Cesium.CallbackProperty(_update, false);
viewer.entities.add(this.options);
};
return _;
})();
handler.setInputAction(function (movement) {
var cartesian = scene.camera.pickEllipsoid(movement.position, scene.globe.ellipsoid);
if (positions.length == 0) {
positions.push(cartesian.clone());
}
positions.push(cartesian);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
handler.setInputAction(function (movement) {
var cartesian = scene.camera.pickEllipsoid(movement.endPosition, scene.globe.ellipsoid);
if (positions.length >=1) {
if (!Cesium.defined(poly)) {
poly = new wallPoly(positions);
} else {
positions.pop();
positions.push(cartesian);
}
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
handler.setInputAction(function (movement) {
handler.destroy();
var polyli = viewer.entities.getById(poly.options.id);
console.log(polyli);
}, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
网友评论