28

我有一个从用户数据动态生成的叠加层,所以我需要知道如何找到该叠加层的中心。

目前,我只是使用叠加层中的第一个坐标,但这并不代表叠加层的中心。因此,当我加载地图时,它不会以覆盖为中心。

有没有人有一种通过计算中心而不是硬编码来使地图在叠加层上居中的好方法?

var latlng = new google.maps.LatLng(38.269239, -122.276010);
    var myOptions = {
        zoom: 15,//Calculate this somehow?
        center: latlng,// Calculate value from array of coordinates?
        mapTypeId: google.maps.MapTypeId.HYBRID
    };
4

2 回答 2

91

如果您有坐标列表,则可以遍历它们并将它们添加到LatLngBounds对象。这是 V3 API 的示例,但 V2 中的概念类似:

var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < coordinates.length; i++) {
  bounds.extend(coordinates[i]);
}

之后,您可以通过以下方式获得中心:

bounds.getCenter();

或者,您可以map.fitBounds()直接调用,这将使地图以边界中心为中心并调整缩放,以便整个边界完全适合视口。

map.fitBounds(bounds);
于 2010-07-23T18:07:34.040 回答
15

基于@tux21b,

      var bounds = new google.maps.LatLngBounds();
      polyline.getPath().forEach(function(e){//can't do polyline.getPath()[i] because it's a MVCArray
          bounds.extend(e);
      })         
      _map.fitBounds(bounds);
于 2013-08-21T08:21:35.503 回答