2. 概述

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

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

2.1. 场景构建

  1. 场景页面构建

     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>Hello World</title>
         <link href="LSGlobe/Apps/SampleCode/templates/bucket.css" type="text/css" rel="stylesheet" />
         <script type="text/javascript" src="LSGlobe/Apps/SampleCode/Sandcastle-header.js"></script>
         <script type="text/javascript" src="LSGlobe/Build/LSGlobe/LSGlobe.js"></script>
     </head>
     <body>
     <div class="fullSize"></div>
     <div><h1>Loading...</h1></div>
     </body>
     </html>
    
  2. 初始化一个球

     function startup(LSGlobe) {
         'use strict';
         var viewer = new LSGlobe.Viewer('lsGlobe', {
             baseLayerPicker: false,
             sceneModePicker: false,
             fullscreenButton:false,
             guid:licenseCode,
             //许可码
             licenseUrl:lincenseUrl,
             //许可地址
         });
     }
     if (typeof LSGlobe !== "undefined") {
         startup(LSGlobe);
     } else if (typeof require === "function") {
         require(["LSGlobe"], startup);
     }
    
  3. 许可配置

    许可配置前需要有许可,没有许可场景是无法构建的。本地电脑配置好许可以后可用接口获取到许可码和许可路径。

    获取接口

    http://localhost:1000/api/license/1.0.0/getLicenseConf

    返回信息是许可路径和许可码的拼接字符串用#分个开

2.2. 场景事件

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.3. 场景坐标转换

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