我遇到了Google Maps Javascript API的一个奇怪问题。使用fitBounds()方法时,webkit浏览器会在平移和缩放某些缩放级别之间进行动画处理。这很不错,但是当使用“叠加地图类型”时,有时不会显示原始地图图块。我无法在较小的显示器上重新创建它,所以我认为它与大型地图画布有关。
我做了一个简单的示例页面,它几乎从API文档中复制过来。为了重现问题:
1)使用大型显示器在Chrome(Mac或Windows)上打开http://pastehtml.com/view/cqloxyo5v.html,并确保窗口最大化。我正在使用24“。
2)按“点击我!”左下角的按钮触发fitBounds() - 方法,其中两个坐标位于地图范围之外。
3)地图将设置动画以适合坐标,并且一些地图图块将变为空。如果没有动画,则浏览器窗口可能太小。如果它确实有动画但是看起来没问题,请更新页面并再次尝试几次。它似乎偶尔会发生。
这就是我的样子:https://vimeo.com/58366640
有人遇到过类似的东西吗?有没有办法禁用动画?
提前谢谢!
答案 0 :(得分:0)
这是一个已知问题,有很多要求提供禁用动画的选项。
我没有注意到视频中显示的行为,但对我来说,在非常高和非常低的缩放级别之间切换时,缩放动画是一个非常难看的过程。
我不知道它是否适合您的情况,是否能解决问题,但我在OpenLayers中找到了可能的解决方法,可以避免Google地图中的动画。它们只是隐藏完整的地图容器,并在流程完成后显示容器。
在你的情况下,这将是:
$().ready(function() {
$("#clickButton").click(function() {
var bounds = new google.maps.LatLngBounds();
bounds.extend(new google.maps.LatLng(49.0, 2.55));
bounds.extend(new google.maps.LatLng(35.55, 139.78));
var mapDiv=map.getDiv();
map.fitBounds(bounds);
google.maps.event.addListenerOnce(map,'tilesloaded',
function(){mapDiv.style.visibility=''});
mapDiv.style.visibility="hidden";
});
});
答案 1 :(得分:0)
另一个重复链接:http://tinyurl.com/baqvppr
这似乎是一个Chrome错误。出于某种原因,Chrome耗尽了GPU内存。 您可以在此投票支持此问题: https://code.google.com/p/chromium/issues/detail?id=175549
答案 2 :(得分:0)
通过偶然事件,我需要稍微平移我的地图以显示所有标记。除了解决这个问题外,地图还停止了对各种缩放的动画效果。效果并不是人们想要的(地图变成空白,然后标记变焦到它们的位置,然后显示新的范围的地图),但它对我需要的东西更好,也许它&# 39;对你来说更好。这是我的功能的底部,它将标记放在地图上:
map.fitBounds(latlngbounds);
//This minimum zoom trick I got from StackOverflow:
google.maps.event.addListenerOnce(map, 'bounds_changed', function(event){
if (this.getZoom() >= 5){
this.setZoom(5)
}
});
map.panBy(1,0);