Google地图V3:标记图像在地图拖动和缩放后显示在错误的位置

时间:2011-09-22 20:52:57

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

我正在为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中不是问题。

1 个答案:

答案 0 :(得分:0)

我被解雇了。

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

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

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

}

所以,添加

this.map.fitBounds(bounds);
两个逻辑路径中的

解决了问题