2. 概述

优质
小牛编辑
135浏览
2023-12-01

Wish3D Earth是用于展示数据的平台,支持多种类型数据的混合加载,可对数据进行标绘、量测、分析等操作。但是这些操作必须是在场景中进行。Wish3D Earth的场景实际就是一个拟真的三维地球。如何构建一个拥有三维球的场景是开始开发的第一步。

2.1. Wish3D Earth SDK

SDK由两个部分构成,核心引擎和功能插件,如下图显示:

SDK构成

1.核心引擎如图展示:

核心引擎

2.功能插件包含:模型平移、测量、指北针、标绘绘制、水面、大矢量加载等,如图展示:

功能插件

2.2. 场景构建

2.2.1. 场景页面构建

<!DOCTYPE html>
<html lang="en">
 <head> 
  <meta charset="UTF-8" /> 
  <title>Hello World</title> 
  <link href="LSGlobe/Widgets/widgets.css" type="text/css" rel="stylesheet" /> 
  <script src="Build/LSGlobe/LSGlobe.js"></script> 
 </head> 
 <body> 
  <div class="fullSize"></div> 
  <div>
   <h1>Loading...</h1>
  </div>  
 </body>
</html>

2.2.2. 初始化一个球

在初始化之前我们必须要有许可服务地址(lincenseUrl)和许可码(licenseCode),获取方法我们可以参考许可相关,来获取lincenseUrl和licenseCode。

初始化地球代码:


<!DOCTYPE html>
<html lang="en">
 <head> 
  <meta charset="UTF-8" /> 
  <title>Hello World</title> 
  <link href="LSGlobe/Widgets/widgets.css" type="text/css" rel="stylesheet" /> 
  <script src="Build/LSGlobe/LSGlobe.js"></script> 
 </head> 
 <body> 
  <div class="fullSize"></div> 
  <div>
   <h1>Loading...</h1>
  </div> 
  <script>
        var viewer = new LSGlobe.Viewer('lsGlobe', {
            baseLayerPicker: false,
            sceneModePicker: false,
            fullscreenButton:false,
            guid:licenseCode,
            //许可码
            licenseUrl:lincenseUrl
            //许可服务地址
        });
        //token是当前用户的登录凭证、权限验证凭证(如果没有用户系统可以不设)
        LSGlobe.LSOnline.defaultAccessToken = token;
    </script>   
 </body>
</html>

token :是当前用户的登录凭证,可以通过接口获取素材权限、团队权限、用户信息等,获取方法可以参照登录接口

2.3. 场景事件

//1.初始化事件句柄
var handler = new LSGlobe.ScreenSpaceEventHandler(viewer.scene.canvas);

//2.添加事件句柄鼠标操作类型
handler.setInputAction(function (movement){
    //movement.position当前的屏幕坐标
}, LSGlobe.ScreenSpaceEventType.LEFT_CLICK);
//LEFT_DOWN左键按下时触发
//LEFT_UP 左键弹起时触发
//LEFT_CLICK 左击时触发
//RIGHT_CLICK 右击时触发
//DOUBLE_CLICK 双击时触发
//MOUSE_MOVE 鼠标移动时触发

//3.事件销毁
Handler.destroy();

2.4. 场景坐标转换

//1.屏幕坐标转换和世界坐标相互转换

//屏幕坐标转世界坐标
var Pos=scene.pickGlobe(movement.position);
//movement.position 鼠标事件触发时返回的坐标

//世界坐标转屏幕坐标
var movement = LSGlobe.SceneTransforms.wgs84ToWindowCoordinates(scene, pos);
//scene 场景对象 pos世界坐标

//2.世界坐标和经纬度相互转换
//世界坐标转换为经纬度
var cartographic = LSGlobe.Cartographic.fromCartesian(Pos);
//Pos世界坐标对象  
var currentClickLon = LSGlobe.Math.toDegrees(cartographic.longitude);
//经度
var currentClickLat = LSGlobe.Math.toDegrees(cartographic.latitude);
//纬度
var height= cartographic.height;
//高度

//经纬度换为世界坐标转
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=LSGlobe.Cartographic.fromDegrees(longitude,latitude,height);
//longitude经度 latitude维度 height高度  
var cartesian3=ellipsoid.cartographicToCartesian(cartographic);

//3.经纬度弧度相互转换

//经纬度转弧度
LSGlobe.Math.toRadians(degrees)

//弧度转经纬度
LSGlobe.Math.toDegrees (radians)

最后更新:

类似资料

  • 几乎所有的东西都可以被认为是提供者 - service, repository, factory, helper 等等。他们都可以注入依赖关系 constructor,也就是说,他们可以创建各种关系。但事实上,提供者不过是一个用@Injectable() 装饰器注解的简单类。 控制器应处理 HTTP 请求并将更复杂的任务委托给服务。提供者是纯粹的 JavaScript 类,其 @Injectabl

  • 在阅读这个此文档之前,请确保你已经阅读并理解了关于Appium的基本概念, 以及关于如何参与Appium贡献说明 技术愿景 Appium致力于成为一个移动JSONWP前端,实现最佳的应用自动化技术。仅此而已。我们想要采用所有不同的 但自带亮点的自动化引擎,通过制作Appium驱动程序来平滑它们的差异和瑕疵,同时将它们纳入Appium。这与 Selenium项目有异曲同工之妙。对于我们而言,我们想要

  • 本文向大家介绍解释领导者和追随者的概念。相关面试题,主要包含被问及解释领导者和追随者的概念。时的应答技巧和注意事项,需要的朋友参考一下 答:在Kafka的每个分区中,都有一个服务器充当领导者,0到多个服务器充当追随者的角色。

  • 是否有运行各种docker项目的机器。每个docker容器都会在生成系统中出现新版本时定期更换/停止/启动。 这种机器的备份概念是什么样子的? 研究类似的问题[1]我现在还不清楚备份/恢复过程的正确路径。我目前的理解是: 备份 使用脚本创建图像和容器。在您喜爱的版本控制系统中存储/备份脚本。使用版本标签来提取docker图像。不要使用最新标签 恢复 确保所有命名卷都已恢复原位 [1] 如何备份Do

  • 概述 国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。 Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。 实际上,Django做了两件事: 由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。 根据用户的偏好设置,使用钩子将web应用本地化。 很显然,翻译取决于用户所选语言,而格式化通常取决

  • 虽然Django 满满的便捷性让Web 开发人员活得轻松一些,但是如果不能轻松地部署你的网站,这些工具还是没有什么用处。Django 起初,易于部署就是一个主要的目标。有许多优秀的方法可以轻松地来部署Django: 如何使用WSGI 部署 部署的检查清单 FastCGI 的支持已经废弃并将在Django 1.9 中删除。 如何使用FastCGI、SCGI 和AJP 部署Django 如果你是部署D