//****************************高度测量 第一个点的经纬度,第二个点的高度,两点水平距离为半径************************************************//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之【高度】量算相关推荐

  1. Cesium 可变高度+动态纹理水体

    Cesium 可变高度+动态纹理水体 由于任务中的需求,要求使用primitive实体配合动态纹理并且可以进行高度变化,实现一种动态水体的效果. 删除原实体重新添加新实体的方法会影响系统观感. 动态纹 ...

  2. Cesium基础-表面面积量算(依地形量算、依模型表面量算)

    上一篇Cesium基础-表面距离量算简单介绍了表面距离的计算原理.这一篇想介绍一下表面面积量算的实现过程. 和表面距离一样,本质还是"微积分"的原理.将整块面无限细化为很小的小面, ...

  3. 超图Cesium量算

    Cesium.MeasureHandler 提供面积量算.距离量算.高度量算功能. new Cesium.MeasureHandler(viewer, mode) 其中mode值可以为: Cesium ...

  4. 查询距离两天的数据_一张图就可以管理城建数据?!实景城市三维平台来了

    公众号"三维前沿",实景建模平台全分享. 01实景城市三维平台 福建三维前沿航空科技有限公司联合多方资源,成功开发出城市实景城市三维管理平台,将城市辖区的各种比例尺的矢量数据.影像 ...

  5. MAPGIS-TDE 三维处理平台简介

    MAPGIS-TDE 三维处理平台简介 •  MAPGIS-TDE 体系结构    考虑到不同领域的三维应用在数据组织.建模及三维分析方面存在着较大的差异, MAPGIS-TDE 的设计体现出体系结构 ...

  6. 无人机测绘 实景城市三维管理平台 三维建模

    实景城市三维管理平台 福建三维前沿航空科技有限公司联合多方资源,成功开发出城市实景城市三维管理平台,将城市辖区的各种比例尺的矢量数据.影像数据管理维护起来,实现以下功能: ▲实景城市三维管理平台功能模 ...

  7. Cesium量算-贴地形距离

    Cesium量算-贴地形距离 查了很多贴地距离计算的,但试了下都测不准,还是自己写一个吧. 找了个地形比较夸张的地方测试了下,贴地距离比直线距离将近多两百米 主要思路: 起始点转成制图坐标(Cesiu ...

  8. Cesium获取经度 ,纬度,高度

    实例代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  9. Cesium geojson 区域拉伸高度

    geojson文件地址:http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&am ...

  10. Cesium测量工具,距离测量、面积测量、高度测量

    Cesium测量工具,距离测量.面积测量.高度测量 前言 测量工具几乎是每个GIS系统都具备的基础工具,Cesium没有自带测量工具,只能我们自己封装. 实现效果 实现思路 测距测高在Cesium中有 ...

最新文章

  1. 画布canvas标签,并且在画布上画简单的形状
  2. Firefox 控制台
  3. Spark SQL 源代码分析系列
  4. linux磁盘空间清理
  5. CV之IC: 图像描述(Image Captioning) 的简介、使用方法、案例应用之详细攻略
  6. node JS 微信开发
  7. 使用Prometheus发现在Kubernetes上运行的应用程序
  8. 北亚利桑那大学等推出:航拍森林火情检测数据集 FLAME
  9. chromedriver放在哪个目录下_Windows下ThinkPHP与Linux互通
  10. 未来教育c语言题库百度云,未来教育计算机c语言二级题库(操作题).docx
  11. 数据迁移工具(数据库之间进行数据库迁移所使用的工具及迁移流程。)
  12. Java-集合练习题
  13. 金蝶K3 各个表对应的名称
  14. 蓝桥杯2014java_【图片】2014-2016蓝桥杯java本科B组省赛题_蓝桥杯吧_百度贴吧
  15. python因子分析案例_Python因子分析简介
  16. 用MATLAB求一阶微分方程(组)数值解
  17. vhg电路是什么意思_显示装置和电力监测电路的制作方法
  18. linux配置mac地址命令是什么,Linux环境下如何配置IP地址、MAC地址
  19. 直播预告:如何在“贵系”找到自己的发展方向?| 贵系万花筒
  20. 2014年9月CCF软考试题

热门文章

  1. 远程控制家里电脑的N种方案
  2. 人活着到底为了什么?
  3. 产品经理怎样提升自己的需求分析能力?
  4. CDN:BootCDN 项目列表-摘录-20180405
  5. 普林斯顿大学计算机科学排名,普林斯顿大学研究生计算机系统专业排名
  6. css动画transition和animation实现遮罩动画
  7. response.sendRedirect()的用法
  8. 手工从grub引导进入Ubuntu16.04
  9. php 抽奖活动_PHP实现活动人选抽奖功能
  10. Java中模拟评分系统_评分系统.java