用于構建應用程序的基本小部件。它將所有標準的BMGL部件組合成一個可重用的包。這個小部件總是可以通過使用mixins進行擴展,mixins為各種應用程序添加了有用的功能。
new Viewer(container, options)
Parameters:
container
((Element | String))
將包含該小部件的DOM元素或ID。
options
(Object)
Name | Description |
---|---|
options.animation
Boolean
default false
|
如果設置為false,則不會創建動畫小部件。 |
options.baseLayerPicker
Boolean
default false
|
如果設置為false,則不會創建baselayerPicker小部件。 |
options.fullscreenButton
Boolean
default false
|
如果設置為false,將不會創建全屏按鈕小部件。 |
options.homeButton
Boolean
default false
|
如果設置為false,則不會創建homebutton小部件。 |
options.infoBox
Boolean
default true
|
如果設置為false,將不會創建信息框小部件。 |
options.sceneModePicker
Boolean
default false
|
如果設置為false,則不會創建scenemodepicker小部件。 |
options.selectionIndicator
Boolean
default true
|
如果設置為false,則不會創建SelectionIndicator小部件。 |
options.timeline
Boolean
default false
|
如果設置為false,則不會創建時間軸小部件。 |
options.navigationHelpButton
Boolean
default false
|
如果設置為false,則不會創建導航幫助按鈕。 |
options.navigationInstructionsInitiallyVisible
Boolean
default true
|
如果導航指令最初應該可見,則為true;如果在用戶明確單擊按鈕之前不應顯示,則為false。 |
options.scene3DOnly
Boolean
default false
|
當true 時,每個幾何體實例將僅在3D中渲染以保存GPU內存。
|
options.shouldAnimate
Boolean
default false
|
true 如果時鐘在默認情況下試圖提前模擬時間,false 否則。此選項優先于設置Viewer#clockViewModel 。
|
options.clockViewModel
ClockViewModel
default new ClockViewModel(options.clock)
|
用于控制當前時間的時鐘視圖模型。 |
options.mapId
String
|
要使用的圖像ID。僅當options.baselayerPicker設置為false時,此值才有效。 |
options.terrainId
String
|
要使用的地形ID |
options.skyBox
SkyBox
|
用來渲染星星的天盒。當undefined 時,使用默認星。
|
options.skyAtmosphere
SkyAtmosphere
|
蔚藍的天空,以及環繞地球邊緣的光芒。設置為false 關閉。
|
options.fullscreenElement
(Element | String)
default document.body
|
當按下全屏按鈕時要置于全屏模式的元素或ID。 |
options.useDefaultRenderLoop
Boolean
default true
|
如果此小部件應控制呈現循環,則為true,否則為false。 |
options.targetFrameRate
Number
|
使用默認渲染循環時的目標幀速率。 |
options.showRenderLoopErrors
Boolean
default true
|
如果為true,則如果出現呈現循環錯誤,此小部件將自動向包含錯誤的用戶顯示HTML面板。 |
options.useBrowserRecommendedResolution
Boolean
default false
|
如果為真,則以瀏覽器建議的分辨率呈現,并忽略window.devicePixelRatio 。
|
options.automaticallyTrackDataSourceClocks
Boolean
default true
|
如果為true,則此小部件將自動跟蹤新添加的數據源的時鐘設置,如果數據源的時鐘發生更改,則進行更新。如果要獨立配置時鐘,請將此設置為false。 |
options.contextOptions
Object
|
與傳遞給Scene 的options 對應的上下文和WebGL創建屬性。
|
options.sceneMode
SceneMode
default SceneMode.SCENE3D
|
初始場景模式。 |
options.mapProjection
MapProjection
default new GeographicProjection()
|
要在二維和哥倫布視圖模式中使用的地圖投影。 |
options.globe
Globe
default new Globe(mapProjection.ellipsoid)
|
在場景中使用的球體。如果設置為false ,則不會添加地球儀。
|
options.orderIndependentTranslucency
Boolean
default true
|
如果為true,并且配置支持它,則使用與順序無關的半透明。 |
options.dataSources
DataSourceCollection
default new DataSourceCollection()
|
由小部件可視化的數據源集合。如果提供此參數,則假定實例由調用方所有,并且在查看器被銷毀時不會被銷毀。 |
options.terrainExaggeration
Number
default 1.0
|
用于放大地形的標量。請注意,地形放大不會修改任何其他基本體,因為它們是相對于橢球體定位的。 |
options.shadows
Boolean
default false
|
確定陰影是否由太陽投射。 |
options.terrainShadows
ShadowMode
default ShadowMode.RECEIVE_ONLY
|
確定地形是投射還是接收來自太陽的陰影。 |
options.mapMode2D
MapMode2D
default MapMode2D.INFINITE_SCROLL
|
確定二維地圖是可旋轉的還是可以沿水平方向無限滾動。 |
options.projectionPicker
Boolean
default false
|
如果設置為true,則將創建ProjectionPicker小部件。 |
options.requestRenderMode
Boolean
default false
|
如果為“真”,則僅在場景中的更改決定需要時才會渲染幀。啟用會降低應用程序的CPU/GPU使用率,并在移動設備上使用較少的電池,但需要使用Scene#requestRender 在此模式下顯式呈現新幀。在許多情況下,在對API其他部分中的場景進行更改之后,這是必需的。
|
options.maximumRenderTimeChange
Number
default 0.0
|
如果requestrendermode為true,則此值定義請求呈現之前允許的模擬時間的最大更改。 |
Example
//Initialize the viewer widget with several custom options and mixins.
var viewer = new bmgl.Viewer('container', {
mapId : ‘bigemap.googlemapen-satellite’,
terrainId : 'bigemap.terrain-globe'
});
//Add basic drag and drop functionality
viewer.extend(bmgl.viewerDragDropMixin);
//Show a pop-up alert if we encounter an error when processing a dropped file
viewer.dropError.addEventListener(function(dropHandler, name, error) {
console.log(error);
window.alert(error);
});
Throws
-
DeveloperError : 文檔中不存在ID為“container”的元素。
Members
allowDataSourcesToSuspendAnimation : Boolean
獲取或設置數據源是否可以臨時暫停動畫以避免向用戶顯示不完整的圖片。例如,如果在后臺處理異步基元,則時鐘將不會前進,直到幾何圖形就緒。
(readonly) animation : Animation
獲取動畫小部件。
(readonly) baseLayerPicker : BaseLayerPicker
獲取baselayerPicker。
(readonly) BMWidget : BMWidget
獲取bmwidget。
(readonly) camera : Camera
拿到相機。
(readonly) canvas : Canvas
獲取畫布。
(readonly) clock : Clock
獲取時鐘。
clockTrackedDataSource : DataSource
獲取或設置要用查看器的時鐘跟蹤的數據源。
(readonly) clockViewModel : ClockViewModel
獲取時鐘視圖模型。
(readonly) container : Element
獲取父容器。
(readonly) dataSourceDisplay : DataSourceDisplay
獲取用于
DataSource
可視化的顯示。
(readonly) dataSources : DataSourceCollection
獲取要可視化的
DataSource
實例集。
(readonly) entities : EntityCollection
獲取未綁定到特定數據源的實體集合。這是指向
數據源顯示.默認數據源.實體
的快捷方式。
(readonly) fullscreenButton : FullscreenButton
獲取全屏按鈕。
(readonly) homeButton : HomeButton
獲取home按鈕。
(readonly) imageryLayers : ImageryLayerCollection
獲取將在地球儀上呈現的圖像層的集合。
(readonly) infoBox : InfoBox
獲取信息框。
(readonly) messageContainer : Element
獲取窗口頂部區域的DOM元素。
(readonly) navigationHelpButton : NavigationHelpButton
獲取導航幫助按鈕。
(readonly) postProcessStages : PostProcessStageCollection
獲取后期處理階段。
(readonly) projectionPicker : ProjectionPicker
獲取ProjectionPicker。
resolutionScale : Number
獲取或設置用于呈現分辨率的比例因子。小于1.0的值可以在功能較弱的設備上提高性能,而大于1.0的值將以更高的分辨率呈現,然后縮小比例,從而提高視覺逼真度。例如,如果小部件的尺寸為640x480,則將此值設置為0.5將導致場景在320x240處渲染,然后在將其設置為2.0時放大,將導致場景在1280x960處渲染,然后縮小。
-
Default Value:
1.0
(readonly) scene : Scene
獲取場景。
(readonly) sceneModePicker : SceneModePicker
獲取scenemodepicker。
(readonly) screenSpaceEventHandler : ScreenSpaceEventHandler
獲取屏幕空間事件處理程序。
selectedEntity : Entity
獲取或設置要為其顯示選擇指示器的對象實例。
(readonly) selectedEntityChanged : Event
獲取選定實體更改時引發的事件。
(readonly) selectionIndicator : SelectionIndicator
獲取選擇指示器。
(readonly) shadowMap : ShadowMap
獲取場景的陰影圖
shadows : Boolean
確定陰影是否由太陽投射。
targetFrameRate : Number
獲取或設置當
useDefaultRenderLoop
為真時小部件的目標幀速率。如果未定義,瀏覽器的requestAnimationFrame
實現將確定幀速率。如果已定義,則此值必須大于0。高于基礎RequestAnimationFrame實現的值將無效。
terrainProvider : TerrainProvider
地形提供者為地球儀提供表面幾何圖形。
terrainShadows : ShadowMode
確定地形是從太陽投射還是陰影。
(readonly) timeline : Timeline
獲取時間軸小部件。
trackedEntity : Entity
獲取或設置攝像頭當前正在跟蹤的實體實例。
(readonly) trackedEntityChanged : Event
獲取跟蹤實體更改時引發的事件。
useBrowserRecommendedResolution : Boolean
指示是否使用瀏覽器建議的分辨率的布爾標志。如果為真,則忽略瀏覽器的設備像素比,改用1.0,從而有效地基于CSS像素而不是設備像素進行渲染。這可以提高在像素密度較低的設備上的性能。如果為false,則渲染將以設備像素為單位。
Viewer#resolutionScale
無論此標志是對還是錯,仍將生效。
-
Default Value:
false
useDefaultRenderLoop : Boolean
獲取或設置此小部件是否應控制呈現循環。如果設置為真,小部件將使用
requestAnimationFrame
執行小部件的渲染和大小調整,并驅動模擬時鐘。如果設置為false,則必須手動調用resize
,render
方法作為自定義呈現循環的一部分。如果在渲染過程中發生錯誤,將引發Scene
srenderError
事件,并將此屬性設置為false。必須將其設置回“真”才能在出錯后繼續呈現。
Methods
destroy()
銷毀小部件。如果從布局中永久刪除小部件,則應調用。
使用提供的mixin擴展基本查看器功能。mixin可以向提供的查看器實例添加其他屬性、函數或其他行為。
Parameters:
options
(Object)
要傳遞給mixin函數的options對象。
See:
將相機飛向提供的實體、實體或數據源。如果數據源仍在加載過程中,或者可視化仍在加載,則此方法在執行飛行前等待數據準備就緒。
偏移量是以邊界球中心為中心的局部東北向上參考框中的航向/俯仰/范圍。航向和俯仰角在本地東北向上參考框架中定義。航向是從Y軸到X軸的角度。螺距是從xy平面開始的旋轉。正俯仰角在平面上方。負的螺距角在平面以下。范圍是距中心的距離。如果范圍為零,則計算范圍以使整個邊界球體可見。
在二維中,必須有一個俯視圖。相機將放在目標上方向下看。高于目標的高度將是范圍。航向將根據偏移量確定。如果無法從偏移量確定航向,則航向將為北。
Parameters:
target
((Entity | Array.<Entity> | EntityCollection | DataSource | ImageryLayer | BM3DTileset | TimeDynamicPointCloud | Promise.<(Entity|Array.<Entity>|EntityCollection|DataSource|ImageryLayer|BM3DTileset|TimeDynamicPointCloud)>))
要查看的實體、實體數組、實體集合、數據源、bm3dtileset、點云或圖像層。您還可以傳遞一個可以解析為前面提到的類型之一的承諾。
options
(Object)
Name | Description |
---|---|
options.duration
Number
default 3.0
|
以秒為單位的飛行時間。 |
options.maximumHeight
Number
|
飛行高峰期的最大高度。 |
options.offset
HeadingPitchRange
|
在以目標為中心的局部東北向上參考幀中距目標的偏移。 |
這迫使小部件重新考慮其布局,包括小部件大小和信貸安排。
渲染場景。除非
useDefaultRenderLoop
設置為false,否則將自動調用此函數;
調整小部件的大小以匹配容器大小。除非
useDefaultRenderLoop
設置為false,否則將根據需要自動調用此函數。
異步設置攝像頭以查看提供的實體、實體或數據源。如果數據源仍在加載過程中,或者可視化仍在加載,則此方法在執行縮放之前等待數據準備就緒。
偏移量是以邊界球中心為中心的局部東北向上參考框中的航向/俯仰/范圍。航向和俯仰角在本地東北向上參考框架中定義。航向是從Y軸到X軸的角度。螺距是從xy平面開始的旋轉。正俯仰角在平面上方。負的螺距角在平面以下。范圍是距中心的距離。如果范圍為零,則計算范圍以使整個邊界球體可見。
在二維中,必須有一個俯視圖。相機將放在目標上方向下看。高于目標的高度將是范圍。航向將根據偏移量確定。如果無法從偏移量確定航向,則航向將為北。
Parameters:
target
((Entity | Array.<Entity> | EntityCollection | DataSource | ImageryLayer | BM3DTileset | TimeDynamicPointCloud | Promise.<(Entity|Array.<Entity>|EntityCollection|DataSource|ImageryLayer|BM3DTileset|TimeDynamicPointCloud)>))
要查看的實體、實體數組、實體集合、數據源、bm3dtileset、點云或圖像層。您還可以傳遞一個可以解析為前面提到的類型之一的承諾。
Type Definitions
ViewerMixin(viewer, options)
一種用附加功能擴充觀察程序實例的函數。
Parameters:
options
(Object)
要傳遞給mixin函數的options對象。