From 824dece6f25bd50b53146463f856169aff6840b9 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Fri, 13 Nov 2020 15:35:42 +0800
Subject: [PATCH] 剖面分析集成
---
widgets/MapSection/Widget.js | 209 +---------------------------------------------------
1 files changed, 4 insertions(+), 205 deletions(-)
diff --git a/widgets/MapSection/Widget.js b/widgets/MapSection/Widget.js
index a16643a..ebfce20 100644
--- a/widgets/MapSection/Widget.js
+++ b/widgets/MapSection/Widget.js
@@ -29,229 +29,28 @@
){
return declare("MapSection", [BaseWidget],{
baseClass:"demo-widgets-MapSection",
- postCreate:function(){
- this.inherited(arguments);
-
- this._tooltip = this.createTooltip(this.map.cesiumWidget.container);
- },
- createTooltip: function (frameDiv) {
-
- var tooltip = function(frameDiv) {
-
- var div = document.createElement('DIV');
- div.className = "twipsy right";
-
- var arrow = document.createElement('DIV');
- arrow.className = "twipsy-arrow";
- div.appendChild(arrow);
-
- var title = document.createElement('DIV');
- title.className = "twipsy-inner";
- div.appendChild(title);
-
- this._div = div;
- this._title = title;
-
- // add to frame div and display coordinates
- frameDiv.appendChild(div);
- }
-
- tooltip.prototype.setVisible = function(visible) {
- this._div.style.display = visible ? 'block' : 'none';
- }
-
- tooltip.prototype.showAt = function(position, message) {
- if(position && message) {
- this.setVisible(true);
- this._title.innerHTML = message;
- this._div.style.left = position.x + 10 + "px";
- this._div.style.top = (position.y - this._div.clientHeight / 2) + "px";
- }
- }
-
- return new tooltip(frameDiv);
- },
destroy:function(){
-
this.inherited(arguments);
},
- // click:function(){
- // this.active = !this.active;
- // if(this.active){
- // this._tooltip.setVisible(true);
- // }else{
- // this._tooltip.setVisible(false);
- // }
- // this.clearEntity();
- // },
onOpen: function () {
this.map.scene.globe.baseColor = Cesium.Color.BLACK;
$($('div.cesium-viewer').find('.cesium-baseLayerPicker-choices')[0]).children('div:eq(3)').trigger('click');
this.active = true;
- this.clearEntity();
- this._tooltip.setVisible(true);
-
-
},
onClose: function () {
this.active = false;
this.clearEntity();
- this._tooltip.setVisible(false); },
- active:false,
+ this._tooltip.setVisible(false);
+ },
startup:function(){
this.inherited(arguments);
+ var pm = new DC.mapSection(window.dcViewer,Popup,SectionChart);
- var handler = new Cesium.ScreenSpaceEventHandler(window.viewer.scene.canvas);
-
- handler.setInputAction(
- lang.hitch(this,function (movement) {
- if(!this.active)return;
- var ellipsoid = window.viewer.scene.globe.ellipsoid;
- var ellipsoid = Cesium.Ellipsoid.WGS84;
-// var cartesian = window.viewer.scene.camera.pickEllipsoid(movement.position, ellipsoid);//两种的经纬度获取的不一样
- var pickRay = window.viewer.scene.camera.getPickRay(movement.position);
- var cartesian = window.viewer.scene.globe.pick(pickRay, window.viewer.scene);
-
- if (cartesian) {
-
- var cartographic = ellipsoid.cartesianToCartographic(cartesian);
- var longitudeString = Cesium.Math.toDegrees(cartographic.longitude);//.toFixed(2);
- var latitudeString = Cesium.Math.toDegrees(cartographic.latitude);//.toFixed(2);
-
- this.points.push({"lgtd":longitudeString,"lttd":latitudeString});
-
- if(this.points.length==2){
- //计算
- var points = this.createHundryPoints(this.points);
- //弹出
- this.getData(points);
- this.points = [];
- this.active = false;
- this._tooltip.setVisible(false);
- this.bill2 = window.viewer.entities.add({
- position : Cesium.Cartesian3.fromDegrees(longitudeString, latitudeString ),
- billboard : {
- image : "images/marker_green.png",
- pixelOffset: new Cesium.Cartesian2(0, 0),
- heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
- disableDepthTestDistance: Number.POSITIVE_INFINITY
- }
- });
- return;
- }
- this.bill1 = window.viewer.entities.add({
- position : Cesium.Cartesian3.fromDegrees(longitudeString, latitudeString ),
- billboard : {
- image : "images/marker_green.png",
- pixelOffset: new Cesium.Cartesian2(0, 0),
- heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
- disableDepthTestDistance: Number.POSITIVE_INFINITY
- }
- });
- }
-
- }), Cesium.ScreenSpaceEventType.LEFT_CLICK);
-
- handler.setInputAction(
- lang.hitch(this,function (movement) {
- if(!this.active)return;
- if(this.points.length==0){
- this._tooltip.showAt(movement.endPosition, "请获取起点");
- return;
- }
- this._tooltip.showAt(movement.endPosition, "点击结束");
-
- }), Cesium.ScreenSpaceEventType.MOUSE_MOVE);
},
- clearEntity:function(){
+ clearEntity: function () {
window.viewer.entities.remove(this.bill1);
window.viewer.entities.remove(this.bill2);
window.viewer.entities.remove(this.line);
},
- createHundryPoints:function(list){
-
- var lgtd1 = list[0].lgtd;
- var lgtd100 = list[1].lgtd;
- var lgtdStep = (lgtd100-lgtd1)/1000;
-
- var lttd1 = list[0].lttd;
- var lttd100 = list[1].lttd;
- var lttdStep = (lttd100-lttd1)/1000;
- var ary = [];
- for(var i=0;i<1000;i++){
- var lgtd = lgtd1 +(lgtdStep*i);
- var lttd = lttd1 +(lttdStep*i);
- ary.push({"id":i,"lgtd":lgtd,"lttd":lttd});
- }
-
- return ary;
- },
- points:[],
- getData:function(ary){
- var mappints = [];
- for(var j=0;j<ary.length;j++){
- var pt = ary[j];
- mappints.push({lgtd:pt.lgtd,lttd:pt.lttd,height:0});
- }
- //获取高程去
- this.makeChange(mappints).then(lang.hitch(this,function(list){
- var ptsAry = [];
- var numbers_lgtd=[];
- var numbers_lttd=[];
- for(var j=0;j<list.length;j++){
- var pt = list[j];
- ptsAry.push(Number(pt.lgtd));
- ptsAry.push(Number(pt.lttd));
- ptsAry.push(Number(pt.height));
-
- numbers_lgtd.push(Number(pt.lgtd));
- numbers_lttd.push(Number(pt.lttd));
- }
-
-
- this.line = window.viewer.entities.add({
- polyline : {
- positions : Cesium.Cartesian3.fromDegreesArrayHeights(ptsAry),
- width : 3,
- material : new Cesium.PolylineOutlineMaterialProperty({
- color : Cesium.Color.ORANGE,
- outlineWidth : 1,
- outlineColor : Cesium.Color.BLACK
- }),
- clampToGround: true
- }
- });
-
- var panel = new SectionChart({list:ptsAry,oList:list});
- new Popup({
- content: panel,
- titleLabel: "地形剖面图",
- width: 650,
- height: 370,
- buttons: [],
- onClose:lang.hitch(this,function(){
- return true;
- })
- });
- }));
- },
- makeChange:function(datas){
- var datas = datas;
- var def = new Deferred();
- var tIds = [];
- var pos = [];
- for(var i=0;i<datas.length;i++){
- var item = datas[i];
- tIds.push(item.id);
- pos.push(Cesium.Cartographic.fromDegrees(item.lgtd, item.lttd));
- }
- Cesium.sampleTerrain(window.viewer.terrainProvider, 9, pos).then(function (pos) {//去获取高程
- for (var i=0; i<tIds.length; i++) {
- datas[i].height = pos[i].height;
- }
- def.resolve(datas);
- });
- return def;
- }
});
});
\ No newline at end of file
--
Gitblit v1.9.3