javascript - css 缩放的谷歌地图点击不正确的坐标

标签 javascript css google-maps

我有一张谷歌地图插入到一个 css 缩放的容器中。由于元素的具体情况,这是无法避免的。我需要在此 map 上跟踪点击坐标,但缩放 map 会设置不正确的坐标(请参阅代码片段)。

如何解决这个问题?我暂时没有想法:(

const map = new google.maps.Map(document.querySelector('#map'), {
  center: {lat: 48.7, lng: 31},
  zoom: 6
});

google.maps.event.addListener(map, 'click', (event)=> {
  const marker = new google.maps.Marker({
    position: event.latLng,
    map: map
  });
});
html, body {
    height: 100%;
  }
.container {
  width: 800px;
  height: 600px;
  transform: scale(1.2);
  }
#map {
  width: 100%;
  height: 100%;
  }
<script src="https://maps.googleapis.com/maps/api/js?.js"></script>
<div class="container">
<div id="map"></div>
</div>

最佳答案

好的,想出如何修正修复(这是当转换中心为 0,0 时)

function point2LatLng(point, transformScale, map) {
    var topRight = map.getProjection().fromLatLngToPoint(map.getBounds().getNorthEast());
    var bottomLeft = map.getProjection().fromLatLngToPoint(map.getBounds().getSouthWest());
    var scale = Math.pow(2, map.getZoom());
    var worldPoint = new google.maps.Point(point.x / transformScale / scale + bottomLeft.x, point.y / transformScale / scale + topRight.y);
    return map.getProjection().fromPointToLatLng(worldPoint);
  }

gmaps.event.addListener(this.map, 'click', (event)=> {
          let transformMatrix = window.getComputedStyle(this.$el.closest('.container')).transform.match(/^matrix\((.+)\)$/)[1].split(', ');
          let transformScale = parseFloat(transformMatrix[0]);
          var marker = new gmaps.Marker({
              position: point2LatLng(event.pixel, transformScale, this.map),
              map: this.map
          });
        });

关于javascript - css 缩放的谷歌地图点击不正确的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636108/

相关文章:

javascript - 将提示框中输入的值写入asp.net中的文本框

javascript - 如何处理凯撒密码 (Javascript) 中的负移位

javascript - 在谷歌地图标记标签的 Font Awesome 图标标记中放置一个数字

javascript - 悬停保持事件状态,直到鼠标悬停在另一个可悬停对象上

javascript - 如何在 jQuery 中通过子数据获取父 ID?

html - 按钮 - onclick - 请求直接转到链接不起作用

html - css backface 属性是否在最新的 Chrome 中被破坏了?

html - 设置为背景的图像高度绝对定位

javascript - Google 自动加载 map Adsense 库

ruby-on-rails - 将 Google Maps (API V3) 支持添加到 Ruby on Rails 应用程序