我将jqueryUI元素添加到谷歌地图的地图控件中,当手风琴展开时,它将与另一个UI元素碰撞。我曾经使用resize事件来重绘google maps UI以使间距自行修复,现在他们在3.32+中删除了它。
我目前正在使用map.setCenter(map.getCenter());
,但有些情况会发生一些竞争条件,并且它会将我的地图放在美国中心,同时它试图放大到另一个状态。不仅如此,中心和设置中心似乎相当缓慢。我用来每隔50毫秒触发一次resize
,以便动画在UI上流畅,我无法用中心做到这一点因为它每250毫秒就会发生一次
我尝试了map.setZoom(map.getZoom());
并且它不太容易出现竞争条件并且速度非常快但是将缩放设置为完全相同的缩放会触发getTile调用并使我的overlayview闪烁
您仍然可以在地图上收听窗口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>