Javascript 基于路线的中心地图

Javascript 基于路线的中心地图,javascript,function,google-maps,google-maps-api-3,Javascript,Function,Google Maps,Google Maps Api 3,我想根据路线的中心点将谷歌地图居中,但我不能使用fitbounds,因为它不允许我使用自定义缩放(它会缩放到路线的边界) 以下是我目前的尝试。我想知道是否可以使用map.setCenter?我已经注释掉了我认为需要帮助的行 google.maps.event.addListener(dr, 'directions_changed', function() { var route = dr.getDirections().routes[0]; var path = route.overvi

我想根据路线的中心点将谷歌地图居中,但我不能使用
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());

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

DirectionRoute有一个
bounds
-属性(一个
LatLngBounds
-对象)
LatLngBounds
有一个
center
-属性,因此您需要做的就是将地图的
center
设置为
route
边界的
center

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

DirectionRoute具有一个
bounds
-属性(一个
LatLngBounds
-对象)
LatLngBounds
有一个
center
-属性,因此您需要做的就是将地图的
center
设置为
route
边界的
center

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

如果您使用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)#自动变焦
潘托邦地图(边界);#自动居中

就这样,干杯


我是从这里找到的:

如果您使用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)#自动变焦
潘托邦地图(边界);#自动居中

就这样,干杯


我从这里发现:

你认为“路线的中心点”在东西方和南北极端之间的中途?为什么不想使用
fitbounds
?这是一个问题。XY问题是询问您试图解决的问题,而不是实际问题。也就是说,你正在试图解决问题X,你认为解决方案Y(路线中心的中心地图)会起作用,但是当你遇到麻烦时,不要问X,你问Y。“Floris FieldIn将不允许我设置自定义变焦。”埃里克菲利普斯:那么你建议什么?你认为“路线的中心点”是什么?-介于东西极端和南北极端之间?为什么不想使用
fitbounds
?这是一个问题。XY问题是询问您试图解决的问题,而不是实际问题。也就是说,您正在尝试解决问题X,并且您认为解决方案Y(路线中心的中心地图)会起作用,但是当您遇到麻烦时,您不会询问X,而是询问Y。@Floris Fitbunds不允许我设置自定义缩放。@ErikPhilips您有什么建议吗?这似乎没有使地图居中,@Dr.molle您认为它还能做什么?这部分代码:
map.setZoom(route.bounds)错误,导致错误并停止进一步的脚本执行。您可以编写
map.setZoom('needcoffee')具有相同的效果。你要让我猜为什么它是错的吗D@Dr.Molle
setZoom()
需要一个整数作为参数,而不是一个似乎没有居中的LatLngBounds(这就是
route.bounds
的意思),@Dr.Molle您认为它还能做什么?这部分代码:
map.setZoom(route.bounds)错误,导致错误并停止进一步的脚本执行。您可以编写
map.setZoom('needcoffee')具有相同的效果。你要让我猜为什么它是错的吗D@Dr.Molle
setZoom()
需要一个整数作为参数,而不是LatLngBounds(这就是
route.bounds
的含义)