2012-04-22 20 views
52

マップをレンダリングするこのコードはあります。GoogleマップAPI V3メソッドfitBounds()

enter image description here

私はより高いレベルのズームをレンダリングしたいと思いますが:

function initialize() { 
    var myOptions = { 
     center: new google.maps.LatLng(45.4555729, 9.169236), 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 

panControl: true, 
mapTypeControl: false, 
panControlOptions: { 
      position: google.maps.ControlPosition.RIGHT_CENTER 
     }, 
zoomControl: true, 
zoomControlOptions: { 
    style: google.maps.ZoomControlStyle.LARGE, 
    position: google.maps.ControlPosition.RIGHT_CENTER 
}, 
scaleControl: false, 
streetViewControl: false, 
streetViewControlOptions: { 
    position: google.maps.ControlPosition.RIGHT_CENTER 
      } 
     }; 
    var map = new google.maps.Map(document.getElementById("mapCanvas"), 
     myOptions); 



var Item_1 = new google.maps.LatLng(45.5983128 ,8.9172776); 

var myPlace = new google.maps.LatLng(45.4555729, 9.169236); 

var marker = new google.maps.Marker({ 
    position: Item_1, 
    map: map}); 

var marker = new google.maps.Marker({ 
    position: myPlace, 
    map: map}); 

var bounds = new google.maps.LatLngBounds(myPlace, Item_1); 
map.fitBounds(bounds); 

    } 

は、2つの点が25キロから分離されている場合でも、私はこの結果を得ます。私はあなたのサポートのための方法fitBounds()

var bounds = new google.maps.LatLngBounds(myPlace, Item_1); 
    map.fitBounds(bounds); 

感謝を使用し、この

enter image description here

同様

答えて

29

LatLngBoundsにおけるデモ(南西、北東)ためにポイントを定義する必要があり

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(myPlace); 
bounds.extend(Item_1); 
map.fitBounds(bounds); 

オブジェクト空の境界に.extend()方法を使用します。あなたのポイントはその順番ではありません。

一般的な修正は、あなたはポイントは間違いなくそのためになりますかわからない場合は特に、空の境界を拡張することです:

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(myPlace); 
bounds.extend(Item_1); 
map.fitBounds(bounds); 

APIが範囲を整理します。

+7

ハ!ちょうどそれに殴ら。 iPadのキーボードは速い入力を容易にしません。 –

18

私は上記で提案したLatLngBoundsを構築していますが、同じ問題があります。問題は、私が見つけた最良の方法は、このようなアイドルハンドラに通話を発信することですQ. のように結果を残すことがあり、物事は非同期であり、間違った時にmap.fitBounds()を呼び出すことです:

google.maps.event.addListenerOnce(map, 'idle', function() { 
    map.fitBounds(markerBounds); 
}); 
+1

ありがとう、これは、私はcoordsにアドレスをジオコーディングしていたので、それらのコードにマッピングしていたが、それは動作していなかったので、私にとって大きな助けとなりました – andrewtweber

+0

私はまだHTMLが含まれているので、 'fitBounds()'のように、ズームが明らかにできなかったようです。それをズームしようとする前にマップが最初に表示されていることを確認してくれました。 – stevo

+1

HUUUGEヘルプ、この返答ありがとう –

6
var map = new google.maps.Map(document.getElementById("map"),{ 
       mapTypeId: google.maps.MapTypeId.ROADMAP 

      }); 
var bounds = new google.maps.LatLngBounds(); 

for (i = 0; i < locations.length; i++){ 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 
bounds.extend(marker.position); 
} 
map.fitBounds(bounds); 
+2

それは私のために働くクール。ありがとう@MAMASSi –

関連する問題