Auto-center map with multiple markers in Google Maps API v3

后端 未结 8 997
梦如初夏
梦如初夏 2020-12-07 06:38

This is what I use to display a map with 3 pins/markers:



        
8条回答
  •  离开以前
    2020-12-07 07:18

    There's an easier way, by extending an empty LatLngBounds rather than creating one explicitly from two points. (See this question for more details)

    Should look something like this, added to your code:

    //create empty LatLngBounds object
    var bounds = new google.maps.LatLngBounds();
    var infowindow = new google.maps.InfoWindow();    
    
    for (i = 0; i < locations.length; i++) {  
      var marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        map: map
      });
    
      //extend the bounds to include each marker's position
      bounds.extend(marker.position);
    
      google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
          infowindow.setContent(locations[i][0]);
          infowindow.open(map, marker);
        }
      })(marker, i));
    }
    
    //now fit the map to the newly inclusive bounds
    map.fitBounds(bounds);
    
    //(optional) restore the zoom level after the map is done scaling
    var listener = google.maps.event.addListener(map, "idle", function () {
        map.setZoom(3);
        google.maps.event.removeListener(listener);
    });
    

    This way, you can use an arbitrary number of points, and don't need to know the order beforehand.

    Demo jsFiddle here: http://jsfiddle.net/x5R63/

提交回复
热议问题