【问题标题】:Google Maps V3: Marker Images displayed in incorrect position after map drag and zoomGoogle Maps V3:地图拖动和缩放后标记图像显示在不正确的位置
【发布时间】:2011-11-23 04:42:49
【问题描述】:

我正在向 v3 api 中的地图添加一组标记。一切正常,但是当我拖动地图(足以使标记离开屏幕),放大,然后将地图拖回原始中心时,标记图像大致偏移了我拖动地图的距离。它们仍然以正确的形状排列,只是移动了。

其他几点说明:

  • 如果我拖动而不放大,或者如果我拖动并缩小,标记图像不会移动。
  • 如果我只是放大地图直到标记离开屏幕,也会发生同样的事情
  • 多段线不会移动(即,无论如何它们都保持正确的位置)
  • 在 Firefox 中,当我放大地图中心以外的点时,标记图像会移动(或者更确切地说,保持在相同的像素位置,并且不会随着地图上的坐标点移动)

这是我使用添加标记的代码:

var bounds = new google.maps.LatLngBounds;

for (i=0, len=points.length; i<len; i++) {

    var myPoint = points[i];
    var myLatLng = new google.maps.LatLng(myPoint.lat, myPoint.lng);

    var markerImage = new google.maps.MarkerImage(
        'http://www.mysite.com/images/marker.png',
        new google.maps.Size(21,21),    // size
        new google.maps.Point(0,0),     // origin
        new google.maps.Point(10,10),   // anchor
        new google.maps.Size(21,21)     // scale
    );

    var markerOptions = {};
    markerOptions.map = this.map;
    markerOptions.position = myLatLng;
    markerOptions.icon = markerImage;               
    markerOptions.draggable = true;

    this.markers[i] = new google.maps.Marker(markerOptions);

    bounds.extend(myLatLng);

}

就像标记窗格与地图和折线窗格断开连接一样。添加标记时我可以做些什么不同的事情,以便图像保持正确的显示位置?这在 V2 中不是问题。

【问题讨论】:

  • 你有哪些事件监听器?
  • 在每个标记上,我有 3 个侦听器 :: 1. marker dragend - 重绘折线 2. marker mouseover - 显示信息框 3. marker click - 以标记为中心并放大。在地图本身上,我只有一个监听器:地图点击 - 关闭所有打开的信息框

标签: google-maps google-maps-api-3 google-maps-markers


【解决方案1】:

我被解雇了。

就在示例中的代码块之后,我有

if (init) {
    //a bunch of stuff, PLUS
    this.map.fitBounds(bounds);

} else {
    //a bunch of other stuff, BUT NO fitBounds

}

所以,添加

this.map.fitBounds(bounds);

在两个逻辑路径中都解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2015-01-26
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多