Cesium之【高度】量算
//****************************高度测量 第一个点的经纬度,第二个点的高度,两点水平距离为半径************************************************//var measureHeight = function (viewer, handler){ handler_g = handler = new Cesium.ScreenSpaceEventHandler(viewer.scene._imageryLayerCollection); var positions = [];var poly = null;var tooltip = document.getElementById("toolTip");var height = 0;var cartesian = null;var floatingPoint;tooltip.style.display = "block";handler.setInputAction(function(movement){tooltip.style.left = movement.endPosition.x + 3 + "px";tooltip.style.top = movement.endPosition.y - 25 + "px";tooltip.innerHTML ='<p>单击开始,双击结束</p>';cartesian = viewer.scene.pickPosition(movement.endPosition); console.log(positions);if(positions.length >= 2){if (!Cesium.defined(poly)) {poly = new PolyLinePrimitive(positions);}else{positions.pop(); positions.push(cartesian);}height = getHeight(positions); }},Cesium.ScreenSpaceEventType.MOUSE_MOVE);handler.setInputAction(function(movement){tooltip.style.display = "none";cartesian = viewer.scene.pickPosition(movement.position); if(positions.length == 0) {positions.push(cartesian.clone());positions.push(cartesian);floatingPoint_g = floatingPoint = viewer.entities.add({parent:measure_entities,name : '高度',position : positions[0], point : {pixelSize : 5,color : Cesium.Color.RED,outlineColor : Cesium.Color.WHITE,outlineWidth : 2,heightReference:Cesium.HeightReference.none },label : {text : "0米",font : '18px sans-serif',fillColor : Cesium.Color.GOLD,style: Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth : 2,verticalOrigin : Cesium.VerticalOrigin.BOTTOM,pixelOffset : new Cesium.Cartesian2(20, -40)}});} }, Cesium.ScreenSpaceEventType.LEFT_CLICK);handler.setInputAction(function(movement){handler.destroy();//positions.pop();//清除移动点 tooltip.style.display = "none";//viewer_g.entities.remove(floatingPoint);// console.log(positions);//在三维场景中添加Labelvar textDisance = height + "米";var point1cartographic = Cesium.Cartographic.fromCartesian(positions[0]);var point2cartographic = Cesium.Cartographic.fromCartesian(positions[1]); var point_temp= Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(point1cartographic.longitude), Cesium.Math.toDegrees(point1cartographic.latitude),point2cartographic.height); viewer.entities.add({parent:measure_entities,name : '直线距离',position : point_temp, point : {pixelSize : 5,color : Cesium.Color.RED,outlineColor : Cesium.Color.WHITE,outlineWidth : 2,heightReference:Cesium.HeightReference.none },label : {text : textDisance,font : '18px sans-serif',fillColor : Cesium.Color.GOLD,style: Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth : 2,verticalOrigin : Cesium.VerticalOrigin.BOTTOM,pixelOffset : new Cesium.Cartesian2(20, -20)}}); }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK ); function getHeight(_positions){var cartographic = Cesium.Cartographic.fromCartesian(_positions[0]);var cartographic1 = Cesium.Cartographic.fromCartesian(_positions[1]);var height_temp = cartographic1.height - cartographic.height; return height_temp.toFixed(2); }var PolyLinePrimitive = (function(){function _(positions){this.options = {parent:measure_entities,name:'直线',polyline : { show : true,positions : [],material : Cesium.Color.AQUA ,width : 2 },ellipse : {show : true,// semiMinorAxis : 30.0,// semiMajorAxis : 30.0,// height: 20.0,material : Cesium.Color.GREEN.withAlpha(0.5),outline : true // height must be set for outline to display}};this.positions = positions;this._init();}_.prototype._init = function(){var _self = this;var _update = function(){ var temp_position =[];temp_position.push( _self.positions[0]);var point1cartographic = Cesium.Cartographic.fromCartesian(_self.positions[0]);var point2cartographic = Cesium.Cartographic.fromCartesian(_self.positions[1]); var point_temp= Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(point1cartographic.longitude), Cesium.Math.toDegrees(point1cartographic.latitude),point2cartographic.height); temp_position.push(point_temp);console.log(temp_position);return temp_position;};var _update_ellipse = function(){ return _self.positions[0];};var _semiMinorAxis = function(){var point1cartographic = Cesium.Cartographic.fromCartesian(_self.positions[0]);var point2cartographic = Cesium.Cartographic.fromCartesian(_self.positions[1]);/**根据经纬度计算出距离**/var geodesic = new Cesium.EllipsoidGeodesic();geodesic.setEndPoints(point1cartographic, point2cartographic);var s = geodesic.surfaceDistance;return s;};var _height = function(){var height_temp = getHeight(_self.positions);return height_temp;};//实时更新polyline.positionsthis.options.polyline.positions = new Cesium.CallbackProperty(_update,false);this.options.position = new Cesium.CallbackProperty(_update_ellipse,false);this.options.ellipse.semiMinorAxis =new Cesium.CallbackProperty(_semiMinorAxis,false);this.options.ellipse.semiMajorAxis = new Cesium.CallbackProperty(_semiMinorAxis,false);this.options.ellipse.height = new Cesium.CallbackProperty(_height,false);viewer.entities.add(this.options);};return _;})();};
Cesium之【高度】量算相关推荐
- Cesium 可变高度+动态纹理水体
Cesium 可变高度+动态纹理水体 由于任务中的需求,要求使用primitive实体配合动态纹理并且可以进行高度变化,实现一种动态水体的效果. 删除原实体重新添加新实体的方法会影响系统观感. 动态纹 ...
- Cesium基础-表面面积量算(依地形量算、依模型表面量算)
上一篇Cesium基础-表面距离量算简单介绍了表面距离的计算原理.这一篇想介绍一下表面面积量算的实现过程. 和表面距离一样,本质还是"微积分"的原理.将整块面无限细化为很小的小面, ...
- 超图Cesium量算
Cesium.MeasureHandler 提供面积量算.距离量算.高度量算功能. new Cesium.MeasureHandler(viewer, mode) 其中mode值可以为: Cesium ...
- 查询距离两天的数据_一张图就可以管理城建数据?!实景城市三维平台来了
公众号"三维前沿",实景建模平台全分享. 01实景城市三维平台 福建三维前沿航空科技有限公司联合多方资源,成功开发出城市实景城市三维管理平台,将城市辖区的各种比例尺的矢量数据.影像 ...
- MAPGIS-TDE 三维处理平台简介
MAPGIS-TDE 三维处理平台简介 • MAPGIS-TDE 体系结构 考虑到不同领域的三维应用在数据组织.建模及三维分析方面存在着较大的差异, MAPGIS-TDE 的设计体现出体系结构 ...
- 无人机测绘 实景城市三维管理平台 三维建模
实景城市三维管理平台 福建三维前沿航空科技有限公司联合多方资源,成功开发出城市实景城市三维管理平台,将城市辖区的各种比例尺的矢量数据.影像数据管理维护起来,实现以下功能: ▲实景城市三维管理平台功能模 ...
- Cesium量算-贴地形距离
Cesium量算-贴地形距离 查了很多贴地距离计算的,但试了下都测不准,还是自己写一个吧. 找了个地形比较夸张的地方测试了下,贴地距离比直线距离将近多两百米 主要思路: 起始点转成制图坐标(Cesiu ...
- Cesium获取经度 ,纬度,高度
实例代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- Cesium geojson 区域拉伸高度
geojson文件地址:http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&am ...
- Cesium测量工具,距离测量、面积测量、高度测量
Cesium测量工具,距离测量.面积测量.高度测量 前言 测量工具几乎是每个GIS系统都具备的基础工具,Cesium没有自带测量工具,只能我们自己封装. 实现效果 实现思路 测距测高在Cesium中有 ...
最新文章
- Linux基础入门 | 目录结构
- LED音乐频谱之输出数据处理
- 干货:如何进行用户流失分析与预警?
- Sql Server 日期格式转换
- Love2D游戏引擎制作贪吃蛇游戏
- matplotlib(四)核心模式以及注意事项
- iptables(上)
- matlab isinteger,MATLAB数据类型
- ppz css栅格框架
- js 生成二维码_js 生成二维码
- java-io-FileReader和FileWriter类
- c++ 三角函数_精准备考 | 初中数学三角函数知识点全归纳
- ODBC数据源的作用及配置
- SkinSharp破解版与模版皮肤下载与使用
- RPG类游戏开发方法
- 群晖nas服务器的虚拟机,群晖NAS用于虚拟化的存储
- DigiCert SSL证书支持中文域名申请吗?
- 学计算机的怎样提升打字速度,如何提高打字速度:电脑键盘指法练习
- MSP430F157IPMR 超低功耗 MCU 封装:LQFP64
- forcast iframe 及 四款播放器