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.MollesetZoom()
需要一个整数作为参数,而不是一个似乎没有居中的LatLngBounds(这就是route.bounds
的意思),@Dr.Molle您认为它还能做什么?这部分代码:map.setZoom(route.bounds)代码>错误,导致错误并停止进一步的脚本执行。您可以编写map.setZoom('needcoffee')代码>具有相同的效果。你要让我猜为什么它是错的吗D@Dr.MollesetZoom()
需要一个整数作为参数,而不是LatLngBounds(这就是route.bounds
的含义)