瀏覽代碼

优化鹰眼代码

tags/1.10.1
Caven Chen 5 年之前
父節點
當前提交
2ddf960965
共有 4 個檔案被更改,包括 45 行新增33 行删除
  1. 1
    1
      src/core/event/MouseEvent.js
  2. 2
    3
      src/core/layer/HtmlLayer.js
  3. 3
    2
      src/core/transform/Transform.js
  4. 39
    27
      src/core/widget/HawkeyeMap.js

+ 1
- 1
src/core/event/MouseEvent.js 查看文件

@@ -53,7 +53,7 @@ class MouseEvent extends Event {
if (scene.pickPositionSupported) {
cartesian = scene.pickPosition(position)
}
let surfaceCartesian = undefined
let surfaceCartesian
if (scene.mode === Cesium.SceneMode.SCENE3D) {
let ray = scene.camera.getPickRay(position)
surfaceCartesian = scene.globe.pick(ray, scene)

+ 2
- 3
src/core/layer/HtmlLayer.js 查看文件

@@ -71,9 +71,8 @@ class HtmlLayer extends Layer {
* @returns {HtmlLayer}
*/
clear() {
let childNodes = this._delegate.childNodes
for (let i = childNodes.length - 1; i >= 0; i--) {
this._delegate.removeChild(childNodes[i])
while (this._delegate.hasChildNodes()) {
this._delegate.removeChild(this._delegate.firstChild)
}
this._cache = {}
this._state = State.CLEARED

+ 3
- 2
src/core/transform/Transform.js 查看文件

@@ -17,8 +17,9 @@ class Transform {
*/
static transformCartesianToWGS84(cartesian) {
if (cartesian) {
let ellipsoid = Cesium.Ellipsoid.WGS84
let cartographic = ellipsoid.cartesianToCartographic(cartesian)
let cartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(
cartesian
)
return new Position(
Cesium.Math.toDegrees(cartographic.longitude),
Cesium.Math.toDegrees(cartographic.latitude),

+ 39
- 27
src/core/widget/HawkeyeMap.js 查看文件

@@ -29,46 +29,50 @@ class HawkeyeMap extends Widget {
super()
this._wrapper = DomUtil.create('div', 'dc-hawkeye-map', null)
this._wrapper.setAttribute('id', Util.uuid())
this._baseLayer = undefined
this._delegate = undefined
this._baseLayers = []
this._map = undefined
this.type = Widget.getWidgetType('hawkeye_map')
this._state = State.INITIALIZED
}

_prepareDelegate() {
this._delegate = new Cesium.Viewer(this._wrapper, {
get baseLayers() {
return this._baseLayers
}

_mountMap() {
let viewer = new Cesium.Viewer(this._wrapper, {
...DEF_OPTS,
sceneMode: Cesium.SceneMode.SCENE2D
})
this._delegate.scene.screenSpaceCameraController.enableRotate = false
this._delegate.scene.screenSpaceCameraController.enableTranslate = false
this._delegate.scene.screenSpaceCameraController.enableZoom = false
this._delegate.scene.screenSpaceCameraController.enableTilt = false
this._delegate.scene.screenSpaceCameraController.enableLook = false
this._delegate.cesiumWidget._creditContainer.style.display = 'none'
this._delegate.cesiumWidget.screenSpaceEventHandler.removeInputAction(
viewer.scene.screenSpaceCameraController.enableRotate = false
viewer.scene.screenSpaceCameraController.enableTranslate = false
viewer.scene.screenSpaceCameraController.enableZoom = false
viewer.scene.screenSpaceCameraController.enableTilt = false
viewer.scene.screenSpaceCameraController.enableLook = false
viewer.scene.screenSpaceCameraController.maximumZoomDistance = 40489014.0
viewer.scene.backgroundColor = Cesium.Color.TRANSPARENT
viewer.cesiumWidget._creditContainer.style.display = 'none'
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
)
this._delegate.scene.screenSpaceCameraController.maximumZoomDistance = 40489014.0
this._delegate.scene.backgroundColor = Cesium.Color.TRANSPARENT
this._delegate.scene.postProcessStages.fxaa.enabled = true
this._delegate.imageryLayers.removeAll()
viewer.imageryLayers.removeAll()
this._map = viewer
}

_bindEvent() {
this._viewer.camera.changed.addEventListener(this._sync2DView, this)
this._viewer.camera.changed.addEventListener(this._syncMap, this)
}

_unbindEvent() {
this._viewer.camera.changed.removeEventListener(this._sync2DView, this)
this._viewer.camera.changed.removeEventListener(this._syncMap, this)
}

_installHook() {
this._prepareDelegate()
this._mountMap()
this._viewer.camera.percentageChanged = 0.01
}

_sync2DView() {
_syncMap() {
let viewCenter = new Cesium.Cartesian2(
Math.floor(this._viewer.canvas.clientWidth / 2),
Math.floor(this._viewer.canvas.clientHeight / 2)
@@ -79,25 +83,33 @@ class HawkeyeMap extends Widget {
}
let distance = Cesium.Cartesian3.distance(
worldPosition,
this._viewer.scene.camera.positionWC
this._delegate.scene.camera.positionWC
)
this._delegate.scene.camera.lookAt(
this._map.scene.camera.lookAt(
worldPosition,
new Cesium.Cartesian3(0.0, 0.0, distance)
)
}

/**
*
* @param baseLayer
* @returns {HawkeyeMap}
*/
addBaseLayer(baseLayer) {
if (!this._delegate || !this._enable) {
if (!this._map || !this._enable) {
return this
}
if (baseLayer) {
if (this._baseLayer) {
this._delegate.imageryLayers.remove(this._baseLayer)
if (this._baseLayers && this._baseLayers.length) {
this._map.imageryLayers.removeAll()
}
if (!Array.isArray(baseLayer)) {
baseLayer = [baseLayer]
}
this._baseLayer = this._delegate.imageryLayers.addImageryProvider(
baseLayer
)
baseLayer.forEach(item => {
this._baseLayers.push(this._map.imageryLayers.addImageryProvider(item))
})
}
return this
}

Loading…
取消
儲存