google-maps - 谷歌地图自定义叠加位置移动

标签 google-maps overlays

我为我正在做的一个谷歌地图项目制作了一些自定义叠加层。我遇到的问题是,当我定位叠加层时,它会根据叠加层的左上角定位它,所以当我放大和缩小时,它看起来好像叠加层逐渐向右和向下移动。我需要它从中心定位,所以我尝试了:

var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
if (point) {
  div.style.left = point.x - $(this.content).outerWidth(true)/2 + 'px';
  div.style.top = point.y - $(this.content).outerHeight(true)/2 + 'px';
}

其中 div 是叠加层,point.x 和 point.y 位于叠加层的左上角。我想如果我减去覆盖的宽度/2 和高度/2,它就会居中。这似乎与 x 的宽度完美配合,但对于 y,当我缩小 map 时,位置似乎仍逐渐向下移动。

最佳答案

我实际上能够在不久前弄清楚这一点。事实证明,虽然 x 位置需要除以 2,但 y 位置不需要。我刚开始有一个错误的假设,即因为 point.x 是基于 div 的左侧定位的,所以 point.y 是基于 div 的顶部定位的。看起来 point.y 一开始是 div 的中间,所以将它除以 2 实际上是导致它在我缩放时上下漂移的原因。

关于google-maps - 谷歌地图自定义叠加位置移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032243/

相关文章:

swift - 在 iOS swift 中将 LAT/Long 转换为位置地址

javascript - 具有多个叠加层和图像按钮的 Flowplayer

javascript - 为多个标记设置动画

javascript - 以正确的格式将 php 变量传递给 html

javascript - 检测点击是否在 OverlayView 内部

google-maps - Google Maps API V3是否支持触摸事件?

Android - 自定义列表(覆盖列表中某些位置的元素)

ios - Objective-C 如何从与当前 View 重叠的选项卡栏中呈现操作表?

google-maps-api-3 - 放大 Google Map Api 时会出现恼人的白色闪烁