2009-06-02 28 views
3

GLatLngBoundsを使用して、マップ上のすべてのマーカーを表示しようとしています。以下は私がやっていることの小さな例です。GLatLngBounds - センターとズームのレベルが正しくない

INV.createMap = function(containerId) { 
    var map = null; 
    var geocoder = null; 
    var bounds = new GLatLngBounds(); 

    if (GBrowserIsCompatible()) { 
     map = new GMap2(document.getElementById(containerId), { 
      size: new GSize(600, 300) 
     }); 
     map.setCenter(new GLatLng(54.729378425601766, 25.279541015625), 15); 
     map.addControl(new GSmallZoomControl()); 
     geocoder = new GClientGeocoder(); 
    } 

    return { 
     markAdress: function(address, infoContentHtml) { 
      if (map !== null && geocoder !== null) { 
       geocoder.getLatLng(address, function(point) { 
        if (point) { 
         var marker = new GMarker(point); 
         GEvent.addListener(marker, 'mouseover', function() { 
          if (!map.getInfoWindow().getPoint().equals(this.getLatLng())) { 
           this.openInfoWindowHtml(infoContentHtml); 
          } 
         }); 
         map.addOverlay(marker); 
         bounds.extend(point); 
        } 
       }); 
      } 
     }, 

     finalize: function() { 
      map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); 
     } 
    }; 
}; 

使用法:

var m = INV.createMap('whatever'); 
var addresses = ... 
for (var i = 0, l = addresses.length; i < l; i++) { 
    m.markAdress('address...', 'htmlInfo...'); 
} 
m.finalize(); 

問題はズームレベルが完全に間違っていることである(waaayあまりにズームアウト)とマーカーが何らかの理由で、地図の左上隅に表示されます(ただし、すべてのそれらが見える)。

私は間違っていますか?

EDIT:この質問は無視してください。私は愚かな間違いを犯しました.GClientGeocoderが非同期要求を行って、finalize()メソッドが早すぎて呼び出されるという事実を見落としました。

答えて

1

以下の関数呼び出しの最後の引数は、ズームレベルを指定します。

map.setCenter(new GLatLng(54.729378425601766, 25.279541015625), 15); 

This articleはズームについて少し語っています。ズームレベルが少し高すぎます。

さらにthis tutorialは、マーカーのセットを正しく表示するために地図のズームを調整する方法を説明しています。

希望します。

+0

あなたが引用した行は、初期化段階にあります。コードを読み終えたら、最終的なズームレベルを実際に設定する行が見つかります。 あなたがリンクしているチュートリアルは、setCenterコールでcenterとzoomの両方を設定するのではなく、setZoomを呼び出すという細部を除いて、Reeがやっていることと変わりがないようです。 FTR、私は難なくsetCenter(中央、ズーム)フォームを使用します。たぶん完全な自己完結型のテストケースが問題の診断に役立つでしょう。 – Stewart

関連する問題