From 33f505d93b673ad966adb4de5cea1fb18475a80a Mon Sep 17 00:00:00 2001 From: yunji Date: Sun, 28 Apr 2024 19:37:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=96=B0=E7=89=88=E9=AB=98=E5=BE=B7?= =?UTF-8?q?=E5=A4=A7=E4=BA=8E=2021=20=20=E7=BA=A7=E5=88=AB=E6=8A=96?= =?UTF-8?q?=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/maps/src/amap-next/map.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/maps/src/amap-next/map.ts b/packages/maps/src/amap-next/map.ts index 9a8a60b9f6..b01213dabc 100644 --- a/packages/maps/src/amap-next/map.ts +++ b/packages/maps/src/amap-next/map.ts @@ -118,13 +118,14 @@ export default class BMapService extends BaseMap { }; private getViewState() { + const { center, zoom } = getMapHighPrecisionState(this.map); const option = { - center: [this.map.getCenter().getLng(), this.map.getCenter().getLat()] as [number, number], + center: center, viewportWidth: this.map.getContainer()!.clientWidth, viewportHeight: this.map.getContainer()!.clientHeight, bearing: -this.map.getRotation(), pitch: this.map.getPitch(), - zoom: this.map.getZoom() - ZOOM_OFFSET, + zoom: zoom - ZOOM_OFFSET, }; return option; @@ -437,3 +438,18 @@ export default class BMapService extends BaseMap { this.map.destroy(); } } + +/** + * 访问高精度的地图状态(临时解决方案) + * - 解决 map.getCenter() 方法只返回小数点五位有效数据 + * - 解决 map.getZoom() 方法只返回小数点两位有效数据 + */ +function getMapHighPrecisionState(map: AMap.Map) { + // @ts-expect-error 访问未暴露的内部属性 + const viewStatus = map._view.getOptions(); + + const center: [number, number] = viewStatus.center; + const zoom: number = viewStatus.zoom; + + return { center, zoom }; +}