2012-04-10 16 views
1

私は複数の場所を持つ地図を持っています。場所は表示されているページに応じて実行時に決定されます(ディーラーの所在地ですので、ディーラーのIDに基づいて異なります(マーカーは上手く表示されますが、今は地図を中心にして、 。?。Google Maps API v3のポイント配列の中心を設定するには

<script type="text/javascript"> 
    function initialize() { 
    var locations = [ 
     <?php 
      $loc = ''; 
      $i = 1; 
      foreach ($coordinates as $c) { 
       $loc .= '["' . $c->company . '", ' . $c->latitude . ', ' . $c->longitude . '], '; 
      $i++; 
      } 
      echo substr($loc, 0, -2); 
     ?> 
    ]; 

    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(-33.92, 151.25), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var infowindow = new google.maps.InfoWindow(); 

    var marker, i; 

    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 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
     return function() { 
      infowindow.setContent(locations[i][0]); 
      infowindow.open(map, marker); 
     } 
     })(marker, i)); 
    } 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 

答えて

6

作成google.maps.LatLngBoundsオブジェクト、すべてのマーカーが含まれています表示されたマーカーに基づいて中心にこれを私行うにはどうすればよい今、ズーム、センターが手動で設定されているが、ここではこれまでのところ私のコードであるマーカーのと

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 
    }); 
    //Extends bounds to contain marker position 
    bounds.extend(marker.getPosition()); 
    ..... 
} 

map.fitBounds(bounds); 
+0

私はFirebugの中にこのエラーが出ます:Invaliし、 '位置し、google.maps.MapオブジェクトのfitBoundsメソッドを使用しますdの値は

:((1,180)、(-1、-180)) – sehummel

+0

すべてのマーカの位置が有効な 'LatLng'オブジェクトであることを確認し、' bounds'は有効な 'LatLngBounds'オブジェクトです。オブジェクト(北東、南西GPSの座標) – Engineer

+0

偉大な答え..たくさんありがとう...私の問題を解決...素晴らしい –

関連する問題