//****************************高度测量 第一个点的经纬度,第二个点的高度,两点水平距离为半径************************************************//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. Linux基础入门 | 目录结构
  2. LED音乐频谱之输出数据处理
  3. 干货:如何进行用户流失分析与预警?
  4. Sql Server 日期格式转换
  5. Love2D游戏引擎制作贪吃蛇游戏
  6. matplotlib(四)核心模式以及注意事项
  7. iptables(上)
  8. matlab isinteger,MATLAB数据类型
  9. ppz css栅格框架
  10. js 生成二维码_js 生成二维码
  11. java-io-FileReader和FileWriter类
  12. c++ 三角函数_精准备考 | 初中数学三角函数知识点全归纳
  13. ODBC数据源的作用及配置
  14. SkinSharp破解版与模版皮肤下载与使用
  15. RPG类游戏开发方法
  16. 群晖nas服务器的虚拟机,群晖NAS用于虚拟化的存储
  17. DigiCert SSL证书支持中文域名申请吗?
  18. 学计算机的怎样提升打字速度,如何提高打字速度:电脑键盘指法练习
  19. MSP430F157IPMR 超低功耗 MCU 封装:LQFP64
  20. forcast iframe 及 四款播放器

热门文章

  1. Centos6.7安装VBoxLinuxAdditions
  2. 华三交换机开机dhcp snooping
  3. 蓝字冲销是什么意思_会计记账,贷方红字,贷方蓝字什么意思
  4. ACM程序设计 -L (字符串倒输出)
  5. python招聘杭州拉勾网_Python3获取拉勾网招聘信息
  6. 5G技术演进与核心技术一(笔记)
  7. 关于Android开发者的简历
  8. android tablayout放图片,Android TabLayout的Indicator如何设置为图片
  9. MAC更新系统网络连接中断
  10. POJ 1564 Sum It Up