//该经纬度为90度俯视角时的在地图中心点
var latlng={lat:22.749373512,lng:114.58905555}
var angle=90//俯视角度,默认90°,可手动更改
//做计算
let centerLatlng=getCenterLatlng(latlng.lng, latlng.lat,158,8000/Math.tan(angle*Math.PI/180))viewer.scene.camera.setView({destination : Cesium.Cartesian3.fromDegrees(centerLatlng.lng, centerLatlng.lat, 8000.0),orientation : {heading : Cesium.Math.toRadians(338),pitch : Cesium.Math.toRadians(-power.angle),roll : 0.0}});
//参数 lng、lat为90俯视时的中心,bring为 heading 角度,取反方向
//dist
function getCenterLatlng(lng, lat, brng, dist) {var a = 6378137;var b = 6356752.3142;var f = 1 / 298.257223563;var lon1 = lng * 1;var lat1 = lat * 1;var s = dist;var alpha1 = brng * (Math.PI / 180)var sinAlpha1 = Math.sin(alpha1);var cosAlpha1 = Math.cos(alpha1);var tanU1 = (1 - f) * Math.tan(lat1 * (Math.PI / 180));var cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)), sinU1 = tanU1 * cosU1;var sigma1 = Math.atan2(tanU1, cosAlpha1);var sinAlpha = cosU1 * sinAlpha1;var cosSqAlpha = 1 - sinAlpha * sinAlpha;var uSq = cosSqAlpha * (a * a - b * b) / (b * b);var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));var sigma = s / (b * A), sigmaP = 2 * Math.PI;while (Math.abs(sigma - sigmaP) > 1e-12) {var cos2SigmaM = Math.cos(2 * sigma1 + sigma);var sinSigma = Math.sin(sigma);var cosSigma = Math.cos(sigma);var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) -B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));sigmaP = sigma;sigma = s / (b * A) + deltaSigma;}var tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1;var lat2 = Math.atan2(sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1,(1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp));var lambda = Math.atan2(sinSigma * sinAlpha1, cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1);var C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));var L = lambda - (1 - C) * f * sinAlpha *(sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));var revAz = Math.atan2(sinAlpha, -tmp); // final bearingvar lngLatObj = { lng: lon1 + L * (180 / Math.PI), lat: lat2 * (180 / Math.PI) }return lngLatObj;}//算法思路,
/**cesium本身的摄像机位置时固定的,更改pitch时,更改的时摄像机的俯视角度,
这种情况下就会导致,虽然角度改变了,但是试图的中心位置不是想要之前想要放置的位置了,
不过只要经过计算即可得到转换后的经纬度,如下图所示
当俯视角阿尔法改变后,摄像机视图的中心点看到的位置,相当于摄像机平移长度 a  后俯视的位置
h为摄像机高度,可以求出 a 为  h/tan(α),这样求出的 a 为长度,单位为米,将其转换为经纬度即可
*/

cesium根据输入角度设置中心点(俯视角度)相关推荐

  1. cesium根据输入高度设置相机camera视角高度

    核心代码: camera.setView({destination: Cesium.Cartesian3.fromRadians(viewer.camera.positionCartographic. ...

  2. android地图旋转监听,android百度地图:地图缩放、旋转、俯视角度以及屏幕像素与经纬度的转换Projection...

    MapControlDemo.java 通过MapController设置缩放.旋转.俯视角度private void perfomZoom(){ EditText t = (EditText) fi ...

  3. cad角度命令怎么输入_CAD阵列命令中角度阵列的使用技巧

    在使用浩辰CAD制图软件绘制图纸的过程中,阵列命令也是比较常用的CAD命令之一.在CAD阵列中除了比较常见的矩形阵列和圆周阵列外还有一种角度阵列,但是很多人可能不了解角度阵列,其实它属于矩形阵列的一种 ...

  4. 手把手教你实现百度基础地图+定位功能+设置中心点+添加Marker

    配置环境 1.获取AppKey 1.创建应用地址:http://lbsyun.baidu.com/apiconsole/key 2.创建应用: 3.获取SHA1值,首先cmd打开dos窗口 4.cd ...

  5. lisp角度转换弪度_角度和弧度换算(角度和弧度怎么换算)

    角度A1转换弧度A2: A2=A1*PI/180 弧度A2转换角度A1: A1=A2*180/PI 1弧度=180/π度1度=π/180弧度 1°= 0.01745 rad 1rad =57.30° ...

  6. 在修路的时候或者建筑工地,为什么要有人支着一个三脚架测量,其实三脚架上面还有仪器的,通常是四种:水准仪、经纬仪、全站仪、GPS。(前三种较常见)可以理解为分别测:高度差、角度、距离加角度、地理坐标

    我是学这个的,学过一年,专业是土地资源管理. 其实三脚架上面还有仪器的,通常是四种:水准仪.经纬仪.全站仪.GPS.(前三种较常见) 可以理解为分别测:高度差.角度.距离加角度.地理坐标. 只有实际测 ...

  7. GIS数据处理-cesium中模型位置设置

    GIS数据处理-cesium中模型位置设置 介绍 最近我收到不少人私信询问我,在cesium中加载3dtiles模型后如何调整模型位置,这里我就统一的介绍一下,我是怎么处理的以供大家参考. 常见模型分 ...

  8. unity 角度限制_Unity实现角度限制

    在Unity(C#)中实现角度限制,有一个坑点(角度换算),相信大多数人都遇到过,本文会对其探究,同时补充点相机角度控制的算法. 1. 通过角度换算来实现角度限制 假设世界空间中存在一游戏物体Obje ...

  9. Android Camera预览角度和拍照保存图片角度学习

    1 Camera预览角度处理 开发Camera过程中会遇到Camera拍照,获取照片后可以上传照片或者展示给用户. Camera的图像数据来源于摄像头硬件的图像传感器,这个图像传感器被固定到手机上后会 ...

最新文章

  1. 应该使用c# 预定义类型 还是绝对不要使用预定义类型。
  2. 如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据
  3. 【CyberSecurityLearning 3】批处理、用户与组管理、服务器远程管理、破解Windows系统密码
  4. Daily Scrum 2012/12/09
  5. bartlett 算法 matlab,GWO(灰狼优化)算法MATLAB源码逐行中文注解(转载)
  6. 手机照片丢失或误删如何恢复
  7. linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
  8. Android Intent 用法总结
  9. spring boot实现WebMvcConfigurer接口定制SpringMvc配置
  10. JDK1.8 IdentityHashMap
  11. 物联网时代下,如何打造智慧新社区?
  12. rsync + inotify 数据实时同步
  13. sprutcam 多机器人_Sprutcam工业机器人离线编程系统
  14. 基于 redis 的单点登录原理
  15. css3动画Animate.css插件与wow.js插件
  16. BZOJ 1189([HNOI2007]紧急疏散evacuate-网络流二分+拆点)
  17. 到底要不要在office/wps平台上做开发
  18. threeJS创建粒子波浪
  19. 明月应时而变 企业随需而变
  20. vc实现魔兽3改键程序

热门文章

  1. 【论文复现】插秧机的任务规划
  2. Vue-实现自适应屏幕高度的方法
  3. SSM整合--简单的增删改查--修改用户信息
  4. 全文检索:sphinx elasticsearch xunsearch 比较
  5. 余弦窗(汉宁窗)的作用——图像预处理
  6. ANSYS多点约束MPC个人总结
  7. linux应用编程和网络编程-3.1.linux中的文件IO(read write open lseek)系统文件管理 inode 3种退出 fd 文件共享
  8. 寓言故事--授人以鱼不如授人以渔
  9. python学习第三天 -----2019年4月23日
  10. 异构图注意力网络 Heterogeneous Graph Attention Network