2013-04-01 53 views
0

以下是用於顯示具有多個標記的Google地圖的代碼。標記數據來自數據庫,因此它可以包含1個位置或多個位置。
對於多個標記,地圖居中並自動縮放。問題是如果只有1個標記,地圖放大到最高水平。有人可以指導我如何修復單個標記的縮放。多標記地圖具有放大問題的單標記

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 

var markers = <?php echo $marker;?>; 

$(document).ready(function() { 
    // Handler for .ready() called. 

    initializeMaps(); 
}); 

function initializeMaps() { 
    var myOptions = { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     mapTypeControl: true, 
     zoom: 6 
    }; 

    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); 
    var infowindow = new google.maps.InfoWindow(); 
    var marker, i; 
    var bounds = new google.maps.LatLngBounds(); 

    for (i = 0; i < markers.length; i++) { 
     var pos = new google.maps.LatLng(markers[i][1], markers[i][2]); 
     map.setCenter(pos); 
     if(i==0){ 
      map.setZoom(5); 
     } 

     bounds.extend(pos); 
     marker = new google.maps.Marker({ 
      position: pos, 
      map: map 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 

       infowindow.setContent(markers[i][0]); 
       infowindow.open(map, marker); 
       //alert('asdfsdfdsaf'); 

      } 
     })(marker, i)); 
    } 
    map.fitBounds(bounds); 
} 
</script> 


<div id="map_canvas" style="width:100%; height:400px"></div> 

回答

1

呼叫map.fitBounds(bounds)只有當存在多於1個標記