1

複数の場所が記載された地図があります。場所は、表示されるページに応じて実行時に決定されます (これらはディーラーの場所であるため、ディーラー ID によって異なります)。表示されたマーカーに基づいてマーカーの中心に配置されます. これを行うにはどうすればよいですか? 現在, ズームと中心は手動で設定されています. これまでの私のコードは次のとおりです:

<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>
4

1 に答える 1

6

すべてのマーカーの位置を含むgoogle.maps.LatLngBoundsオブジェクトを作成し、 google.maps.MapfitBoundsオブジェクトのメソッドを使用します。

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 );
于 2012-04-10T18:19:03.410 に答える