Google将JavaScriptAPI-fitbounds与setCenter映射在一起
我一直在寻找解决这个问题的方法,但似乎找不到解决这个问题的方法。最接近我的是。但这不起作用 我试图做的是基于一组工作正常的标记运行fitbounds。但我也希望基于用户位置(plunk中的反弹标记)将地图居中,并且仍然将所有标记保留在地图视图中。 如果尝试在fitBounds后设置中心,则某些标记位于地图视图之外。 有什么巧妙的方法可以将这两个功能结合起来吗?Google将JavaScriptAPI-fitbounds与setCenter映射在一起,javascript,google-maps,google-maps-api-3,fitbounds,Javascript,Google Maps,Google Maps Api 3,Fitbounds,我一直在寻找解决这个问题的方法,但似乎找不到解决这个问题的方法。最接近我的是。但这不起作用 我试图做的是基于一组工作正常的标记运行fitbounds。但我也希望基于用户位置(plunk中的反弹标记)将地图居中,并且仍然将所有标记保留在地图视图中。 如果尝试在fitBounds后设置中心,则某些标记位于地图视图之外。 有什么巧妙的方法可以将这两个功能结合起来吗? 谢谢 简单解决方案:将您的“用户标记”添加到边界,进行调整边界,然后将结果的缩放比例减少1,并以该标记为中心 bounds.ext
谢谢 简单解决方案:将您的“用户标记”添加到边界,进行调整边界,然后将结果的缩放比例减少1,并以该标记为中心
bounds.extend(userCenterMarker.getPosition());
map.fitBounds(bounds);
google.maps.event.addListenerOnce(map,'bounds_changed', function() {
map.setZoom(map.getZoom()-1);
});
更复杂的解决方案:以“用户标记”为中心,检查标记边界是否完全包含在地图的当前边界中(
map.getBounds().contains(markerBounds)
),如果不包含,则将缩放级别降低1。简单解决方案:将“用户标记”添加到边界中,执行调整边界,然后将结果的缩放比例减小1,并以该标记为中心
bounds.extend(userCenterMarker.getPosition());
map.fitBounds(bounds);
google.maps.event.addListenerOnce(map,'bounds_changed', function() {
map.setZoom(map.getZoom()-1);
});
更复杂的解决方案:以“用户标记”为中心,检查标记边界是否完全包含在地图的当前边界中(
map.getBounds().contains(markerBounds)
),如果没有,则将缩放级别降低1。以上答案对我不起作用。以下是我们所做的:
contained = true;
map.fitBounds(bounds);
map.setCenter(center);
newbounds = map.getBounds();
for (i = 0; i < l; i ++) {
if (!newbounds.contains(markers[i].getPosition())) {
contained = false;
}
}
if (!contained) map.setZoom(map.getZoom() - 1);
contained=true;
映射边界(bounds);
地图设置中心(中心);
newbounds=map.getBounds();
对于(i=0;i
上面的答案对我不适用。以下是我们所做的:
contained = true;
map.fitBounds(bounds);
map.setCenter(center);
newbounds = map.getBounds();
for (i = 0; i < l; i ++) {
if (!newbounds.contains(markers[i].getPosition())) {
contained = false;
}
}
if (!contained) map.setZoom(map.getZoom() - 1);
contained=true;
映射边界(bounds);
地图设置中心(中心);
newbounds=map.getBounds();
对于(i=0;i
谢谢@goecodezip!我将尝试提供的两种方法。我认为更复杂的一个更适合我的情况。我不知道你能做。包含(边界),只是。包含。(标记)。看起来很有希望!,确实可以将bounds类传递到.contains函数中吗?这对我来说是个例外。查看API文档,它说bounds.contains()接受一个latlng,而不是bounds类。谢谢@goecodezip!我将尝试提供的两种方法。我认为更复杂的一个更适合我的情况。我不知道你能做。包含(边界),只是。包含。(标记)。看起来很有希望!,确实可以将bounds类传递到.contains函数中吗?这对我来说是个例外。查看API文档,它说bounds.contains()接受一个latlng,而不是bounds类。