问题描述:
问题描述:
在网页中使用CSS的transform:scale方法放大缩小页面后,高德地图上的点位位置会出现偏移错位的问题。这可能会影响网页的交互效果。
解决方法:
这个问题的解决方案是将高德地图的点位标注放在一个单独的div中,并在这个div上应用transform:scale,以避免锚点偏移的问题。
步骤如下:
- 创建一个新的div,将高德地图点位标注的集合放在这个新的div中:
- 在CSS中将这个新的div设置为我们需要的缩放值:
- 在JS中通过高德地图API获取点位标注数据,并通过循环将每个标注添加到新div中:
这样做的效果是所有的点位标注将会被添加到一个单独的div中,并且这个div被应用了缩放值,而不是整个页面。这样就可以解决我们在缩放页面后,点位标注位置偏移错位的问题。
示例1:
代码示例见:https://jsfiddle.net/Lh7zjbfe/4/
在这个示例中,我们创建了一个 div#map 元素,并将其放在一个固定大小的容器中(使用样式 width: 400px; height: 400px)。
我们添加了一个 AMap.Map 的实例,并将其绑定到 div#map:
最后,我们根据一些点坐标信息添加若干个 marker(标记):
使用样式 transform: scale(.5) 缩小 div#map 的大小,我们可以发现所有的 marker 的位置都出现了偏差。
示例2:
代码示例见:https://jsfiddle.net/wb1x9f75/3/
在这个示例中,我们通过将所有的 marker 都放在一个 div.marker-group 中,然后给这个 div 元素应用一个确定的缩放样式,从而避免了 marker 偏差的问题。
首先,我们在 HTML 中创建了我们需要的 div 元素:
接下来,使用如下的 CSS 样式,我们将 div#map 缩放至 scale(.5),同时设置其 transform-origin 为左上角(0 0):
最后,根据一些点坐标信息添加若干个 marker(标记)到 div.marker-group 中:
这样做的效果是所有的 marker 都被添加到了一个单独的 div.marker-group 中,而不是整个页面上。这个 div 元素被应用了一个缩放样式后,所有的 marker 的位置都不再出现偏差。