日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

cesiumjs学习笔记之三——cesium-navigation插件 【转】

發(fā)布時間:2024/8/26 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 cesiumjs学习笔记之三——cesium-navigation插件 【转】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://blog.csdn.net/Prepared/article/details/68940997?locationNum=10&fps=1

插件源碼地址:https://github.com/alberto-acevedo/cesium-navigation

cesium-navigation

cesium-navigation是一個cesium的插件,提供指南針、導(dǎo)航儀和距離刻度用戶圖形界面。

1、為什么你建立cesium-navigation插件?

首先,所有的Cesiumjs sdk 不包括羅盤,導(dǎo)航儀(放大/縮小)和距離刻度。您可以使用鼠標(biāo)在地圖上導(dǎo)航,但這個導(dǎo)航插件可為用戶提供更多的導(dǎo)航控制和功能。其中一些功能是:將羅盤重置為指向北部,重置軌道,并將視圖重置為默認(rèn)邊界。

2、怎么建立cesium-navigation插件?

cesium-navigation插件基于優(yōu)秀的羅盤,導(dǎo)航儀(放大/縮小)和距離terriajs開源庫的距離刻度。來自terriajs的導(dǎo)航UI不能在銫中開箱即用,因為cesium使用帶有RequireJS的CommonJS模塊,terriajs使用commonjs和Browserify,因此您不能將源文件復(fù)制到銫和構(gòu)建中。cesium-navigation插件的工作包括調(diào)整代碼在cesium作為插件工作如下:

1) 將所有模塊從Browserify轉(zhuǎn)換為requirejs;

2)使用gulpjs來編譯和縮小較少的文件,捆綁和最小化所有模塊,并將源依賴關(guān)系打包成一個文件。作為構(gòu)建過程的一部分,用almondjs替換requirejs,以減少插件中使用的AMD加載器的占用空間。almondjs庫也在插件內(nèi)綁定,使插件像銫中的即插即用一樣簡單;

3)使用nodejs和requirejs優(yōu)化器以及almondjs,整個插件被構(gòu)建并捆綁在單個文件中,甚至CSS樣式也放在這個文件中;

4)該插件可以用作獨立腳本或通過AMD加載程序(使用requirejs進(jìn)行測試)。即使在使用AMD而不是cesium的特殊情況下,插件也可以輕松使用。

3、怎么使用cesium-navigation插件?

cesium-navigation插件有兩個版本,一個獨立版和一個AMD兼容版本:

1)什么時候用什么版本?

a. 如果您正在加載沒有requirejs的銫(即,您有全局變量銫),則使用獨立版本。如果您使用requirejs(但不適用于銫),此版本也是適用的。

導(dǎo)入腳本:

[html] view plain copy

<head>
<!--otherstuff-->

<scriptsrc="path/to/Cesium.js"></script>
<!--IMPORTANT:becausethecesiumnavigationviewermixindependsonCesiumbesuretoloaditafterCesium-->
<scriptsrc="path/to/standalone/viewerCesiumNavigationMixin.js"></script>

<!--otherstuff...-->
</head>

然后擴(kuò)展viewer:

[javascript] view plain copy

//createaviewerassumingthereisaDIVelementwithid'cesiumContainer'
varcesiumViewer=newCesium.Viewer('cesiumContainer');

//extendourviewbythecesiumnavigatonmixin
cesiumViewer.extend(Cesium.viewerCesiumNavigationMixin,{});

或者一個部件:

[javascript] view plain copy

//createawidgetassumingthereisaDIVelementwithid'cesiumContainer'
varcesiumWidget=newCesium.CesiumWidget('cesiumContainer');

//extendourviewbythecesiumnavigatonmixin
Cesium.viewerCesiumNavigationMixin.mixinWidget(cesiumWidget,{});

可以通過一下方式獲取新創(chuàng)建的實例:

[javascript] view plain copy

//ifusingaviewer
varcesiumNavigation=cesiumViewer.cesiumNavigation;

//ifusingawidget
varcesiumNavigation=cesiumWidget.cesiumNavigation;

另外一個例子:

b. 如果除了cesium之外,你使用了requirejs ,則要使用:

[html] view plain copy

<head>
<!--otherstuff...-->

<scriptsrc="path/to/Cesium.js"></script>
<!--重要!加載requirejs在cesium之后-->
<!--viewerCesiumNavigationMixintheglobalvariableCesiumisalreadyset-->
<scripttype="text/javascript"src="path/to/require.js"></script>
<scripttype="text/javascript">
require.config({
//yourconfig...
});
</script>

<!--otherstuff...-->
</head>

加上:

[html] view plain copy

//IMPORTANT:besurethatCesium.jshasalreadybeenloaded,e.g.byloadingrequirejsAFTERCesium
require(['path/to/standalone/viewerCesiumNavigationMixin'],function(viewerCesiumNavigationMixin){
//likeabovecodebutadditionallyonecandirectlyaccess
//viewerCesiumNavigationMixin
//insteadof
//Cesium.viewerCesiumNavigationMixin
}

c. 如果您正在為整個項目(包括cesium)使用requirejs,那么您必須使用AMD兼容版本。

[html] view plain copy

<head>
<!--otherstuff...-->

<scripttype="text/javascript"src="path/to/require.js"></script>
<scripttype="text/javascript">
require.config({
//yourconfig...
paths:{
//yourpaths...
//重要!這里必須設(shè)置,因為viewerCesiumNavigationMixin使用Cesium/...依賴
'Cesium':'path/to/cesium/Source'
}
});
</script>

<!--otherstuff...-->
</head>


加上:

[javascript] view plain copy

require([
'Cesium/Cesium',
'path/to/amd/viewerCesiumNavigationMixin'
],function(
Cesium,
viewerCesiumNavigationMixin){

//likeabovebutnowyoucannotaccessCesium.viewerCesiumNavigationMixin
//butusejustviewerCesiumNavigationMixin
});


或者:

[javascript] view plain copy

require([
'Cesium/Core/Viewer',
'path/to/amd/viewerCesiumNavigationMixin'
],function(
CesiumViewer,
viewerCesiumNavigationMixin){

//likeabovebutnowyoucannotaccessCesium.viewerCesiumNavigationMixin
//butusejustviewerCesiumNavigationMixin
});

設(shè)置插件選項

defaultResetView - >用于在使用重置導(dǎo)航重置地圖視圖時設(shè)置默認(rèn)視圖控制。接受的值是Cesium.Cartographic
和 Cesium.Rectangle.
enableCompass - >用于啟用或禁用羅盤。true是啟用羅盤,false是禁用羅盤。默認(rèn)值為true。如果將選項設(shè)置為false,則羅盤將不會添加到地圖中。
enableZoomControls - >用于啟用或禁用縮放控件。true是啟用,false是禁用。默認(rèn)值為true。如果將選項設(shè)置為false,則縮放控件將不會添加到地圖中。
enableDistanceLegend - >用于啟用或禁用距離圖例。true是啟用,false是禁用。默認(rèn)值為true。如果將選項設(shè)置為false,距離圖例將不會添加到地圖中。
enableCompassOuterRing - >用于啟用或禁用指南針外環(huán)。true是啟用,false是禁用。默認(rèn)值為true。如果將選項設(shè)置為false,則該環(huán)將可見但無效。
更多選項將在未來的插件版本中設(shè)置。

沒有requirejs加載cesium時設(shè)置選項的例子:

[javascript] view plain copy

varoptions={};
options.defaultResetView=Cesium.Rectangle.fromDegrees(71,3,90,14);
//Onlythecompasswillshowonthemap
options.enableCompass=true;
options.enableZoomControls=false;
options.enableDistanceLegend=false;
options.enableCompassOuterRing=true;
cesiumViewer.extend(Cesium.viewerCesiumNavigationMixin,options);


仍然有問題,請查看例子。

刪除導(dǎo)航插件并釋放資源使用:

[javascript] view plain copy

viewer.cesiumNavigation.destroy();

怎么建立cesium-navigation插件?

執(zhí)行:npm install

執(zhí)行:node build.js

開發(fā)指引

對于開發(fā)/調(diào)試,您應(yīng)該看看“Source Example”文件件。該示例直接使用源文件,因此它允許您立即使用(只需要刷新一次頁面),不需要重新構(gòu)建任何內(nèi)容即可查看更改。此外,由于使用來源,您可以輕松地調(diào)試項目(例如通過瀏覽器的開發(fā)人員控制臺或通過IDE的調(diào)試器,如Webstorm)

有沒有使用該插件的實例?

(http://larcius.github.io/cesium-navigation/)

1)指南針,導(dǎo)航儀和距離刻度將顯示在地圖的右側(cè)。
2)此插件已成功測試cesium 1.15版。 它在3D模式下適用于cesium。最近Larcius(https://github.com/Larcius)做了很多改進(jìn),并修復(fù)了哥倫布和二維模式的一些問題。

總結(jié)

以上是生活随笔為你收集整理的cesiumjs学习笔记之三——cesium-navigation插件 【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。