解决页面整体使用transform scale后高德地图点位点击偏移错位问题

问题描述:

在网页中使用CSS的transform:scale方法放大缩小页面后,高德地图上的点位位置会出现偏移错位的问题。这可能会影响网页的交互效果。

解决方法:

这个问题的解决方案是将高德地图的点位标注放在一个单独的div中,并在这个div上应用transform:scale,以避免锚点偏移的问题。

步骤如下:

  1. 创建一个新的div,将高德地图点位标注的集合放在这个新的div中:
<div id="map">
  <div class="marker-group"></div>
</div>
  1. 在CSS中将这个新的div设置为我们需要的缩放值:
#map {
  transform: scale(0.8);
}
  1. 在JS中通过高德地图API获取点位标注数据,并通过循环将每个标注添加到新div中:
var markers = [];
for (var i = 0; i < data.length; i++) {
  var marker = new AMap.Marker({
      position: data[i].position,
      icon: data[i].icon
  });
  marker.setMap(map);
  markers.push(marker);
}
$(".marker-group").append(markers);

这样做的效果是所有的点位标注将会被添加到一个单独的div中,并且这个div被应用了缩放值,而不是整个页面。这样就可以解决我们在缩放页面后,点位标注位置偏移错位的问题。

示例1:

代码示例见:https://jsfiddle.net/Lh7zjbfe/4/

在这个示例中,我们创建了一个 div#map 元素,并将其放在一个固定大小的容器中(使用样式 width: 400px; height: 400px)。

我们添加了一个 AMap.Map 的实例,并将其绑定到 div#map:

var map = new AMap.Map("map", {
  zoom: 13,
  center: [116.397428, 39.90923]
});

最后,我们根据一些点坐标信息添加若干个 marker(标记):

for (var i = 0; i < markers.length; i++) {
  var marker = new AMap.Marker({
    position: markers[i].position,
    map: map
  });

  // 将 marker 保存至集合中
  markerCollection.push(marker);
}

使用样式 transform: scale(.5) 缩小 div#map 的大小,我们可以发现所有的 marker 的位置都出现了偏差。

示例2:

代码示例见:https://jsfiddle.net/wb1x9f75/3/

在这个示例中,我们通过将所有的 marker 都放在一个 div.marker-group 中,然后给这个 div 元素应用一个确定的缩放样式,从而避免了 marker 偏差的问题。

首先,我们在 HTML 中创建了我们需要的 div 元素:

<div id="container" style="width: 400px; height: 400px;">
  <div id="map"></div>
</div>

接下来,使用如下的 CSS 样式,我们将 div#map 缩放至 scale(.5),同时设置其 transform-origin 为左上角(0 0):

#map {
  width: 100%;
  height: 100%;

  /* 调整为适当的缩放比例 */
  transform: scale(.5);

  /* 设置缩放的中心为左上角 */
  transform-origin: 0 0;
}

最后,根据一些点坐标信息添加若干个 marker(标记)到 div.marker-group 中:

for (var i = 0; i < markers.length; i++) {
  var marker = new AMap.Marker({
    position: markers[i].position,
    map: map
  });

  // 将 marker 保存至集合中
  markerCollection.push(marker);

  // 添加 marker 到 div.marker-group 中
  $('.marker-group').append(marker.getContent().cloneNode(true))
}

这样做的效果是所有的 marker 都被添加到了一个单独的 div.marker-group 中,而不是整个页面上。这个 div 元素被应用了一个缩放样式后,所有的 marker 的位置都不再出现偏差。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决页面整体使用transform scale后高德地图点位点击偏移错位问题 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS优先级算法如何计算?有哪些判定规定及计算方式

    CSS优先级算法是用于确定在多个CSS规则应用于同一元素时,哪个规则将具有最高优先级的算法。以下是一个详细的攻略,介绍了CSS优先级算法的计算方式和判定规定,包括两个示例说明: 1. CSS优先级算法的计算方式 CSS优先级算法是基于四个级别的规则计算的,这些级别按照以下顺序排列: 内联样式(在元素的style属性中指定的样式) ID选择器(#id) 类选择…

    css 2023年5月18日
    00
  • css position 设置元素的定位方式详解

    CSS position 的定位方式详解 什么是 CSS position ? CSS position 是用来设置元素定位方式的一个属性。当一个元素被设置了 position 属性之后,我们可以用 top、bottom、left 和 right 来确定它的位置。 一般来说,CSS position 有 4 种类型: static:静态定位,默认值。 rel…

    css 2023年6月9日
    00
  • div+css详解定位与定位应用

    什么是定位? 定位是CSS的一个重要概念,指的是元素在页面中的准确位置。网页制作离不开定位,可以通过定位实现各种效果,如盒子居中、导航菜单等。CSS有三种定位方式: 静态定位(position: static):元素默认值就是静态定位,元素会根据文档流从上到下自动排列。 相对定位(position: relative):相对定位指元素相对于自己原来的位置进行…

    css 2023年6月11日
    00
  • js动态调用css属性的小规律及实例说明

    在 JavaScript 中,可以通过 style 属性来动态设置和获取元素的 CSS 样式。但是,有时候需要动态调用 CSS 属性,例如获取元素的 background-color 属性值。本文将详细讲解 JavaScript 动态调用 CSS 属性的小规律及实例说明。 1. 基本概念 在 JavaScript 中,可以通过 style 属性来动态设置和获…

    css 2023年5月18日
    00
  • CSS画出一个可爱神奇的多啦A梦

    关于如何用CSS画出一个可爱神奇的多啦A梦,我将逐步讲解攻略: 步骤一:准备工作 在开始之前,需要准备好多啦A梦的素材图,以便于参考。同时,需要先搭建好HTML结构,可以使用一个div容器来包含绘制多啦A梦的其他元素。 步骤二:绘制身体 使用CSS中的border-radius属性设置圆角,再使用背景色来填充身体。 .doraemon { width: 80…

    css 2023年6月10日
    00
  • Web设计10个在线开发工具介绍

    Web设计10个在线开发工具介绍 在本篇文章中,我们将介绍10个在线的Web设计开发工具,这些工具不仅可以提高Web开发的效率,而且可以帮助开发人员快速构建漂亮的Web页面。 1. Canva Canva是一款非常受欢迎的在线设计工具,它提供了许多预先设计好的模板和空白的画板与设计工具,用户可以使用其强大的功能轻松设计出各种海报、名片、社交媒体图片以及其他设…

    css 2023年6月11日
    00
  • 小程序中使用css var变量(使js可以动态设置css样式属性)

    使用 CSS 变量可以大大提高开发效率,让我们能够一次性定义样式,然后全局使用。在小程序中使用 CSS 变量,可以使 JS 可以动态设置 CSS 样式属性。 下面是使用 CSS 变量(或者称为 CSS 自定义属性)的完整攻略: 在样式中定义变量 使用 CSS 变量需要在样式中先定义变量名及其对应的值,语法为:–变量名: 值;。例如: :root { –m…

    css 2023年6月9日
    00
  • Python selenium 父子、兄弟、相邻节点定位方式详解

    Python selenium 父子、兄弟、相邻节点定位方式详解 在使用 Python selenium 进行网页自动化测试时,节点定位是一个非常重要的问题。本文将详细介绍如何使用父子、兄弟、相邻节点定位方式在 Python selenium 中找到所需节点。 父子节点定位 1. 直接父子节点定位 在 HTML 中,子节点是通过嵌套(即包含)的方式进行表示,…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部