Карты Google V3: маркер Изображения отображаются в неправильном положении после перетаскивания карты и масштабирования - PullRequest
1 голос
/ 23 сентября 2011

Я добавляю коллекцию маркеров на карту в API v3. Все работает нормально, но когда я перетаскиваю карту (достаточно, чтобы маркеры были за пределами экрана), увеличивал масштаб, а затем перетаскивал карту обратно в исходный центр, изображения маркеров смещались примерно на расстояние, на которое я перетаскивал карту. Они все еще расположены в правильной форме, только что переехали.

Несколько других заметок:

  • Изображения маркеров не перемещаются, если я перетаскиваю и не увеличиваю масштаб или если я перетаскиваю и уменьшаю масштаб.
  • Если я просто увеличиваю карту, пока маркеры не исчезают с экрана, происходит то же самое
  • Полилинии не перемещаются (т.е. они сохраняют свое правильное положение, несмотря ни на что)
  • В 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 голосов
/ 24 сентября 2011

Я уволен.

Сразу после блока кода в примере у меня было

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

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

}

так, добавив

this.map.fitBounds(bounds);

в обоих логических путях исправлена ​​проблема

...