0

我想根据路线的中心点将谷歌地图居中,但我不能使用fitbounds,因为它不允许我使用自定义缩放(它缩放到路线的边界)。

以下是我目前的尝试。我想知道是否可以使用map.setCenter?我已经注释掉了我认为需要帮助的行。

google.maps.event.addListener(dr, 'directions_changed', function() {
  var route = dr.getDirections().routes[0];
  var path = route.overview_path;
  es.getElevationAlongPath({
    path: path,
    samples: Math.max(50, path.length * 2)
  }, function(result, status) {
    if (status == google.maps.ElevationStatus.OK) {
      drawElevation(result);
      recalcHeight();
      if (fitBounds) {
        map.setZoom(route.bounds);
       //map.setCenter();
        fitBounds = false;

      }
    }
    else {
      $('#error').text(status).show();
    }
    recalcHeight();
  });
});

更新:这个简单的改变解决了我的问题 - 自定义缩放,然后正确居中:

map.setZoom(13);
map.setCenter(route.bounds.getCenter());

第二次更新:请删除投票。这是一个合理的问题,答案很简单。

4

2 回答 2

2

DirectionsRoute 有一个bounds-property(a LatLngBounds-object)。LatLngBounds有一个center-property,所​​以您需要做的就是将center地图的centerof 设置为boundsof route

map.setCenter(route.bounds.getCenter());
于 2013-09-12T22:07:36.330 回答
1

如果您使用 Google JS API 在您的网站上显示 Google 地图,您可以通过以下方法使其自动居中并根据其包含的标记自动缩放。

添加标记之前:

bounds = new google.maps.LatLngBounds();

每次添加新标记时:

loc = new google.maps.LatLng(marker.position.lat(),marker.position.lng()); bounds.extend(loc);

添加所有标记后:

map.fitBounds(bounds); # auto-zoom map.panToBounds(bounds); # auto-center

就是这样,加油。

我从这里找到它:链接

于 2019-05-03T09:05:00.950 回答