2012-04-10 3 views
1

У меня есть карта с несколькими местоположениями на ней. Месторасположения определяются во время выполнения в зависимости от отображаемой страницы (они являются местоположениями для наших дилеров, поэтому они варьируются в зависимости от идентификатора дилера (маркеры отображаются хорошо, но теперь я хочу сосредоточить карту так, чтобы она была увеличена, чтобы включить все маркеры и центрируется на основе маркеров, отображаемых Как сделать это прямо сейчас, зум и центр устанавливаются вручную Вот мой код до сих пор:.?.Как установить центр массива точек в API Карт Google 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

+0

Убедитесь, что все позиции маркера являются действительными объектами «LatLng», а 'bounds' является действительным объектом« LatLngBounds »с 2' LatLng' объекты (северо-восточные, юго-западные GPS-координаты) – Engineer

+0

Сэр отличный ответ ... Спасибо большое .. решил мою проблему ... отлично –

Смежные вопросы