调整大小后,如何刷新Google Maps UI?

时间:2018-08-20 17:11:50

标签: google-maps

我将jqueryUI元素添加到Google地图的地图控件中,当手风琴展开时,它将与另一个UI元素碰撞。 我曾经使用过resize事件来重绘google maps UI来进行间距修复,现在他们在3.32+中将其删除。

我当前正在使用map.setCenter(map.getCenter());,但在某些情况下会发生某些比赛情况,并且在将其地图放大到其他状态时,它将使美国的地图居中。不仅如此,获得中心和设置中心似乎很慢。我过去每50毫秒触发一次resize,以使动画在用户界面上保持平滑,但我无法通过居中进行操作,因为它每250毫秒发生一次

我尝试了map.setZoom(map.getZoom());,它不太容易出现比赛情况,而且速度很快,但是将缩放比例设置为完全相同的缩放比例会触发getTile调用,并使我的overlayview闪烁

1 个答案:

答案 0 :(得分:1)

您仍然可以收听窗口resize事件并在地图上触发具有相同名称的事件。

var map = new google.maps.Map(document.getElementById("map_div"), {
  center: new google.maps.LatLng(33.808678, -117.918921),
  zoom: 14,
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

// listen for the window resize event & trigger Google Maps to update too
window.onresize = function() {
  var currCenter = map.getCenter();
  google.maps.event.trigger(map, 'resize');
  map.setCenter(currCenter);
};
<div id="map_div" style="height: 400px;"></div>

<script src="https://maps.googleapis.com/maps/api/js">
</script>