55

次のコードを使用して、マップにマーカーを設定します。

  var latLngs = []
  $.each(locations.markers, function(i, m){
   var myLatLng = new google.maps.LatLng(m.latitude, m.longitude);
   latLngs[i] = myLatLng                                          
   var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    shadow: shadow,
    icon: image,
    shape: shape,
    title: m.city,
    zIndex: i
   });
  }) 

マーカーがマップに表示されます。ここで、これらのマーカーを地図の中心にしてズームしたいと思います。どうすればこれを達成できますか? 私が試してみました:

map.fitBounds(getBoundsForLatLngs(latLngs));

latLngs の console.log は次のように出力します。

 [(46.793182, 7.146903) { b=46.793182,  more...}, (46.8077779, 7.1709386) { b=46.8077779,  more...}]

しかし、うまくいかないようで、コンソールにエラーは表示されません。私は何を間違っていますか?

4

4 に答える 4

128

また、すべてのマーカーに合わせてズームするこの修正も見つけました

LatLngList: latLng のインスタンスの配列。:

// "map" is an instance of GMap3

var LatLngList = [
                     new google.maps.LatLng (52.537,-2.061), 
                     new google.maps.LatLng (52.564,-2.017)
                 ],
    latlngbounds = new google.maps.LatLngBounds();

LatLngList.forEach(function(latLng){
   latlngbounds.extend(latLng);
});

// or with ES6:
// for( var latLng of LatLngList)
//    latlngbounds.extend(latLng);

map.setCenter(latlngbounds.getCenter());
map.fitBounds(latlngbounds); 
于 2010-05-12T13:07:06.583 に答える
18

より機能的なスタイルを好む場合:

// map - instance of google Map v3
// markers - array of Markers
var bounds = markers.reduce(function(bounds, marker) {
    return bounds.extend(marker.getPosition());
}, new google.maps.LatLngBounds());

map.setCenter(bounds.getCenter());
map.fitBounds(bounds);
于 2014-10-23T15:16:46.370 に答える
0

ディスプレイマーカーの中央および自動ズーム用

// map: an instance of google.maps.Map object

// latlng_points_array: an array of google.maps.LatLng objects

var latlngbounds = new google.maps.LatLngBounds( );

    for ( var i = 0; i < latlng_points_array.length; i++ ) {
        latlngbounds.extend( latlng_points_array[i] );
    }

map.fitBounds( latlngbounds );
于 2018-04-13T05:38:34.700 に答える