cesiumjs学习笔记之三——cesium-navigation插件 【转】
http://blog.csdn.net/Prepared/article/details/68940997?locationNum=10&fps=1
插件源码地址:https://github.com/alberto-acevedo/cesium-navigation
cesium-navigation
cesium-navigation是一个cesium的插件,提供指南针、导航仪和距离刻度用户图形界面。
1、为什么你建立cesium-navigation插件?
首先,所有的Cesiumjs sdk 不包括罗盘,导航仪(放大/缩小)和距离刻度。您可以使用鼠标在地图上导航,但这个导航插件可为用户提供更多的导航控制和功能。其中一些功能是:将罗盘重置为指向北部,重置轨道,并将视图重置为默认边界。
2、怎么建立cesium-navigation插件?
cesium-navigation插件基于优秀的罗盘,导航仪(放大/缩小)和距离terriajs开源库的距离刻度。来自terriajs的导航UI不能在铯中开箱即用,因为cesium使用带有RequireJS的CommonJS模块,terriajs使用commonjs和Browserify,因此您不能将源文件复制到铯和构建中。cesium-navigation插件的工作包括调整代码在cesium作为插件工作如下:
1) 将所有模块从Browserify转换为requirejs;
2)使用gulpjs来编译和缩小较少的文件,捆绑和最小化所有模块,并将源依赖关系打包成一个文件。作为构建过程的一部分,用almondjs替换requirejs,以减少插件中使用的AMD加载器的占用空间。almondjs库也在插件内绑定,使插件像铯中的即插即用一样简单;
3)使用nodejs和requirejs优化器以及almondjs,整个插件被构建并捆绑在单个文件中,甚至CSS样式也放在这个文件中;
4)该插件可以用作独立脚本或通过AMD加载程序(使用requirejs进行测试)。即使在使用AMD而不是cesium的特殊情况下,插件也可以轻松使用。
3、怎么使用cesium-navigation插件?
cesium-navigation插件有两个版本,一个独立版和一个AMD兼容版本:
1)什么时候用什么版本?
a. 如果您正在加载没有requirejs的铯(即,您有全局变量铯),则使用独立版本。如果您使用requirejs(但不适用于铯),此版本也是适用的。
导入脚本:
- <head>
 - <!-- other stuff -->
 - <script src="path/to/Cesium.js"></script>
 - <!-- IMPORTANT: because the cesium navigation viewer mixin depends on Cesium be sure to load it after Cesium -->
 - <script src="path/to/standalone/viewerCesiumNavigationMixin.js"></script>
 - <!-- other stuff ... -->
 - </head>
 
然后扩展viewer:
- // create a viewer assuming there is a DIV element with id 'cesiumContainer'
 - var cesiumViewer = new Cesium.Viewer('cesiumContainer');
 - // extend our view by the cesium navigaton mixin
 - cesiumViewer.extend(Cesium.viewerCesiumNavigationMixin, {});
 
或者一个部件:
- // create a widget assuming there is a DIV element with id 'cesiumContainer'
 - var cesiumWidget = new Cesium.CesiumWidget('cesiumContainer');
 - // extend our view by the cesium navigaton mixin
 - Cesium.viewerCesiumNavigationMixin.mixinWidget(cesiumWidget, {});
 
可以通过一下方式获取新创建的实例:
- // if using a viewer
 - var cesiumNavigation = cesiumViewer.cesiumNavigation;
 - // if using a widget
 - var cesiumNavigation = cesiumWidget.cesiumNavigation;
 
另外一个例子:
b. 如果除了cesium之外,你使用了requirejs ,则要使用:
- <head>
 - <!-- other stuff... -->
 - <script src="path/to/Cesium.js"></script>
 - <!-- 重要!加载requirejs在cesium之后 -->
 - <!-- viewerCesiumNavigationMixin the global variable Cesium is already set -->
 - <script type="text/javascript" src="path/to/require.js"></script>
 - <script type="text/javascript">
 - require.config({
 - // your config...
 - });
 - </script>
 - <!-- other stuff... -->
 - </head>
 
加上:
- // IMPORTANT: be sure that Cesium.js has already been loaded, e.g. by loading requirejs AFTER Cesium
 - require(['path/to/standalone/viewerCesiumNavigationMixin'], function(viewerCesiumNavigationMixin) {
 - // like above code but additionally one can directly access
 - // viewerCesiumNavigationMixin
 - // instead of
 - // Cesium.viewerCesiumNavigationMixin
 - }
 
c. 如果您正在为整个项目(包括cesium)使用requirejs,那么您必须使用AMD兼容版本。
- <head>
 - <!-- other stuff... -->
 - <script type="text/javascript" src="path/to/require.js"></script>
 - <script type="text/javascript">
 - require.config({
 - // your config...
 - paths: {
 - // your paths...
 - // 重要!这里必须设置,因为viewerCesiumNavigationMixin 使用Cesium/...依赖
 - 'Cesium': 'path/to/cesium/Source'
 - }
 - });
 - </script>
 - <!-- other stuff... -->
 - </head>
 
加上:
- require([
 - 'Cesium/Cesium',
 - 'path/to/amd/viewerCesiumNavigationMixin'
 - ], function(
 - Cesium,
 - viewerCesiumNavigationMixin) {
 - // like above but now you cannot access Cesium.viewerCesiumNavigationMixin
 - // but use just viewerCesiumNavigationMixin
 - });
 
或者:
- require([
 - 'Cesium/Core/Viewer',
 - 'path/to/amd/viewerCesiumNavigationMixin'
 - ], function(
 - CesiumViewer,
 - viewerCesiumNavigationMixin) {
 - // like above but now you cannot access Cesium.viewerCesiumNavigationMixin
 - // but use just viewerCesiumNavigationMixin
 - });
 
设置插件选项
defaultResetView - >用于在使用重置导航重置地图视图时设置默认视图控制。接受的值是Cesium.Cartographic
 和 Cesium.Rectangle.
enableCompass - >用于启用或禁用罗盘。true是启用罗盘,false是禁用罗盘。默认值为true。如果将选项设置为false,则罗盘将不会添加到地图中。
enableZoomControls - >用于启用或禁用缩放控件。true是启用,false是禁用。默认值为true。如果将选项设置为false,则缩放控件将不会添加到地图中。
enableDistanceLegend - >用于启用或禁用距离图例。true是启用,false是禁用。默认值为true。如果将选项设置为false,距离图例将不会添加到地图中。
enableCompassOuterRing - >用于启用或禁用指南针外环。true是启用,false是禁用。默认值为true。如果将选项设置为false,则该环将可见但无效。
更多选项将在未来的插件版本中设置。
没有requirejs加载cesium时设置选项的例子:
- var options = {};
 - options.defaultResetView = Cesium.Rectangle.fromDegrees(71, 3, 90, 14);
 - // Only the compass will show on the map
 - options.enableCompass= true;
 - options.enableZoomControls= false;
 - options.enableDistanceLegend= false;
 - options.enableCompassOuterRing= true;
 - cesiumViewer.extend(Cesium.viewerCesiumNavigationMixin, options);
 
仍然有问题,请查看例子。
删除导航插件并释放资源使用:
- viewer.cesiumNavigation.destroy();
 
怎么建立cesium-navigation插件?
执行:npm install
执行:node build.js
 
开发指引
对于开发/调试,您应该看看“Source Example”文件件。该示例直接使用源文件,因此它允许您立即使用(只需要刷新一次页面),不需要重新构建任何内容即可查看更改。此外,由于使用来源,您可以轻松地调试项目(例如通过浏览器的开发人员控制台或通过IDE的调试器,如Webstorm)
有没有使用该插件的实例?
(http://larcius.github.io/cesium-navigation/)
1)指南针,导航仪和距离刻度将显示在地图的右侧。
2)此插件已成功测试cesium 1.15版。 它在3D模式下适用于cesium。最近Larcius(https://github.com/Larcius)做了很多改进,并修复了哥伦布和二维模式的一些问题。
cesiumjs学习笔记之三——cesium-navigation插件 【转】的更多相关文章
- Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
		
1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") &a ...
 - Dynamic CRM 2013学习笔记(二)插件基本用法及调试
		
插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...
 - Qt Creator 源码学习笔记04,多插件实现原理分析
		
阅读本文大概需要 8 分钟 插件听上去很高大上,实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾 开发插件其实就是开发一个动态 ...
 - Django 学习笔记之三  数据库输入数据
		
假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...
 - 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
		
 本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
 - hive学习笔记之三:内部表和外部表
		
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
 - bootstrap学习笔记之四(javascript插件)
		
下面展现四个插件的用法,一般插件的功能可以用两种方法实现,一种是引入bootstrap.js后,通过添加data属性实现,另一种则是通过js代码是实现. 第一个插件:下拉菜单的实现 第一种方法:dat ...
 - bootstrap学习笔记之三(组件的使用)
		
bootstrap组件需要引入bootstrap.js才行,当然要引入bootstrap.js首先得引入JQuery. 一.下拉菜单 将下拉菜单触发器和下拉菜单都包裹在 .dropdown 里,或者另 ...
 - 学习笔记之三十年软件开发之路 - Things I Learnt The Hard Way (in 30 Years of Software Development)
		
三十年软件开发之路 https://mp.weixin.qq.com/s/EgN-9bIHonRid1DM0csQDw https://blog.juliobiason.net/thoughts/th ...
 
随机推荐
- [CodeChef - STREETTA]  The Street 李超线段树
			
大致题意: 给出两个序列A,B,A初始为负无穷,B初始为0,有三种操作 1.在A上区间[u,v]上加一个等差数列,取与原本A序列的最大值. 2.在B上区间[u,v]上加一个等差数列. 3.给出一个点X ...
 - Wannafly挑战赛9 C - 列一列
			
链接:https://www.nowcoder.com/acm/contest/71/C来源:牛客网 题目描述 小W在计算一个数列{An},其中A1=1,A2=2,An+2=An+1+An.尽管他计算 ...
 - My blog in AI ---神经网络,神经元(neural network,nervecell)
			
尽管我们有很多经验丰富的软件开发人员,但是利用hard code的方法,要解决一些问题,我们的程序员还是优点捉襟见肘,这些问题包括,识别手写数字照片上的数字:分辨一张彩色照片上是否有一只猫咪:准确理解 ...
 - C++实现平衡二叉树
			
1.概念 平衡二叉树(AVL Tree)首先要满足二叉树的定义,如下 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若右子树不空, ...
 - 装部署VMware vSphere 5.5文档 (6-2) 为IBM x3850 X5服务器安装配置VMware ESXi
			
部署VMware vSphere 5.5 实施文档 ########################################################################## ...
 - python opencv3 直线检测
			
git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 import numpy as np # 读入图像 ...
 - 【10.17校内测试】【二进制数位DP】【博弈论/预处理】【玄学(?)DP】
			
Solution 几乎是秒想到的水题叻! 异或很容易想到每一位单独做贡献,所以我们需要统计的是区间内每一位上做的贡献,就是统计区间内每一位是1的数的数量. 所以就写数位dp辣!(昨天才做了数字统计不要 ...
 - git零基础【慢慢补充】
			
git branch dev //创建新分支 git checkout dev //切换到新分支 git add . //把当前修改加到暂存区 git commit -m "代码描 ...
 - Codeforces Round #281 (Div. 2) A. Vasya and Football 暴力水题
			
A. Vasya and Football time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
 - PHP self与static区别
			
this,static和self. self和this还是很好区分的,可是self和static就很糊涂了,两者都能调用静态的方法和属性,看似使用上没有什么太大的分别,但是实际上分别很大,先来看下面这 ...