2012-04-10 74 views
1

我有一個包含多個位置的地圖。這些位置在運行時間根據顯示的頁面確定(它們是我們經銷商的位置,因此它們根據經銷商編號而有所不同(標記顯示正常,但現在我想將地圖居中以便縮放爲包括所有標記,並根據所顯示的標記中心如何做到這一點現在,縮放和中心手動設置這裏是我到目前爲止的代碼:?如何在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對象,其中包含所有標記「位置,然後用fitBounds方法google.maps.Map對象:

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 d值爲

:((1,180),(-1,-180)) – sehummel 2012-04-10 18:33:28

+0

確保所有標記的位置都是有效的LatLng對象,並且bounds有效LatLngBounds對象具有2 LatLng對象(東北,西南GPS座標) – Engineer 2012-04-10 19:00:07

+0

先生偉大的答案..謝謝很多..他解決了我的問題...偉大的 – 2014-10-29 10:46:04

相關問題