我正在尝试在调整窗口大小时将谷歌地图置于中心位置。我查看了stackoverflow上的许多示例,但这些似乎对我没什么影响。这是示例代码:
google.maps.event.addDomListener(window, 'resize', function() {
//Window Resize and Position map to center
center = map.getCenter();
google.maps.event.trigger(map, 'resize');
map.setCenter(center);
});
我在地图上也有标记,当地图位于中心时,它也应该相应地适合。我在这里错过了什么吗?
答案 0 :(得分:-1)
当您调整窗口(和地图)的大小时,地图的中心也会发生变化(当您没有触发调整大小事件时也是如此)。
当您致电map.setCenter(center)
时,center
的值已经根据地图的新尺寸进行了更新。
每次更改地图时都必须存储地图的中心(地图调整大小时除外),并且在调整地图大小后还原存储的值。
可能的解决方案:
google.maps.event.addListener(map, 'center_changed', function() {
//a value to determine whether the map has been resized
var size=[this.getDiv().offsetWidth,this.getDiv().offsetHeight].join('x');
//when the center has changed, but not the size of the map
if(!this.get('size') || size===this.get('size')){
this.setValues({size:size,_center:this.getCenter()});
}
//when the map has been resized
else{
google.maps.event.addListenerOnce(this,'idle',function(){
this.setValues({size:size,center:this.get('_center')});});
}
});
//trigger the resize-event to initialize the size and _center-values
google.maps.event.trigger(map,'center_changed',{});