浏览代码

add adjust position when container set the scale

4.x
cavencj 5 个月前
父节点
当前提交
599d3a62c4
共有 4 个文件被更改,包括 11 次插入27 次删除
  1. 1
    1
      examples/index.css
  2. 7
    18
      src/modules/event/type/MouseEvent.js
  3. 0
    5
      src/modules/widget/type/Popup.js
  4. 3
    3
      src/modules/widget/type/Tooltip.js

+ 1
- 1
examples/index.css 查看文件

@@ -11,7 +11,7 @@ body {
}

.viewer-container{
position: relative;
position: fixed;
width: 100%;
height: 100%;
overflow: hidden;

+ 7
- 18
src/modules/event/type/MouseEvent.js 查看文件

@@ -60,21 +60,10 @@ class MouseEvent extends Event {
* @returns {Cesium.Cartesian2} - 归一化设备独立像素坐标。
*/
_adjustPosition(position) {
// 获取容器的矩形信息,包括宽度和高度。
const containerRect = this._viewer.container.getBoundingClientRect()
// 计算容器的缩放因子,用于处理响应式布局或自适应大小的容器。
const scaleX = containerRect.width / this._viewer.container.offsetWidth
const scaleY = containerRect.height / this._viewer.container.offsetHeight

// 获取设备的像素比,用于处理高DPI设备的显示问题。
const dpiScale = window.devicePixelRatio

// 将像素坐标转换为归一化设备独立像素坐标,同时考虑了容器的缩放和设备的DPI。
const x = (position.x - containerRect.left) / scaleX / dpiScale
const y = (position.y - containerRect.top) / scaleY / dpiScale

// 返回转换后的坐标。
return new Cesium.Cartesian2(x, y)
const rect = this._viewer.canvas.getBoundingClientRect()
const scale_x = this._viewer.canvas.offsetWidth / rect.width
const scale_y = this._viewer.canvas.offsetHeight / rect.height
return new Cesium.Cartesian2(position.x * scale_x, position.y * scale_y)
}

/**
@@ -141,8 +130,8 @@ class MouseEvent extends Event {
*/
_getMouseInfo(position) {
return {
...this._getMousePosition(position),
target: this._viewer.scene.pick(position),
...this._getMousePosition(this._adjustPosition(position)),
target: this._viewer.scene.pick(this._adjustPosition(position)),
}
}

@@ -424,7 +413,7 @@ class MouseEvent extends Event {
} else {
this._raiseEvent(
MouseEventType.MOUSE_MOVE,
this._getMousePosition(movement.endPosition)
this._getMousePosition(this._adjustPosition(movement.endPosition))
)
}
}

+ 0
- 5
src/modules/widget/type/Popup.js 查看文件

@@ -95,11 +95,6 @@ class Popup extends Widget {
x = windowCoord.x
y = windowCoord.y
}

let offset = this._getViewerOffset()
x += offset.x
y += offset.y

this._wrapper.style.cssText = `
visibility:visible;
z-index:1;

+ 3
- 3
src/modules/widget/type/Tooltip.js 查看文件

@@ -39,9 +39,9 @@ class Tooltip extends Widget {
_updateWindowCoord(windowCoord) {
let x = windowCoord.x + 10
let y = windowCoord.y - this._wrapper.offsetHeight / 2
let offset = this._getViewerOffset()
x += offset.x
y += offset.y
// x += offset.x
// y += offset.y
this._wrapper.style.cssText = `
visibility:visible;
z-index:1;

正在加载...
取消
保存