Google Maps v3 在地图初始化后调整缩放级别

Posted

技术标签:

【中文标题】Google Maps v3 在地图初始化后调整缩放级别【英文标题】:Google Maps v3 adjust zoom level after map has been initialised 【发布时间】:2011-08-07 17:56:28 【问题描述】:

我正在初始化谷歌地图并定期(每 30 秒)更新地图上的标记/信息窗口。 我正在使用 Bounds 自动放大,但要确保所有标记/信息窗口都可见。

我的问题是信息窗口被放置在地图的边缘并且经常被切断。 所以,每次更新地图时,我都需要缩小“1”。 我可以使用“map.zoom”来确定当前的缩放级别并重新计算新的所需值,但我不知道如何设置这个新值。 缩放参数只能在初始化地图时设置吗?

这很简单吗?

下面是我的“更新”功能;

function updatePage() 
//clear current markers
clearOverlays();

var location1 = new google.maps.LatLng(team1data.lat, team1data.lon);
var location2 = new google.maps.LatLng(team2data.lat, team2data.lon);
var bounds = new google.maps.LatLngBounds();
bounds.extend(location1);
bounds.extend(location2);
map.fitBounds(bounds);
var curZoom = map.zoom;
console.log(curZoom);
var newZoom = (curZoom - 1);
console.log(newZoom);



var infowindow1 = new google.maps.InfoWindow(
content: '<div style=\"height:100px;width:230px;font-size:12px;\"><span style="font-weight:bold;">' + team1data.user + ' (' + team1data.location + '): </span>' + team1data.tweet + '</div>'
);

var infowindow2 = new google.maps.InfoWindow(  
 content: '<div style=\"height:100px;width:230px;font-size:12px;\"><span style="font-weight:bold;">' +  team2data.user + ' (' + team2data.location + '): </span>' + team2data.tweet + '</div>'  
);  

//can add as many markers to the map as you like
var marker1 = new google.maps.Marker(
  position: location1,
  map: map,
  title: "Team 1"
);
markersArray.push(marker1);

google.maps.event.addListener(marker1, 'click',
function() 
  infowindow.open(map, marker);
);

var marker2 = new google.maps.Marker(
 position: location2, 
 map: map,
 title:"Team 2"
);
markersArray.push(marker2);

infowindow1.open(map, marker1);
infowindow2.open(map, marker2);

setTimeout("team1tweets()", 30000)

【问题讨论】:

【参考方案1】:

根据API参考,可以使用map.setZoom(zoom)

https://developers.google.com/maps/documentation/javascript/reference/map#Map.setZoom

最好使用map.getZoom() 获取缩放级别,因为map.zoom 只会告诉您初始缩放级别,而不是当前缩放级别。

【讨论】:

在某些情况下,如果在某些操作后立即调用 setZoom(..) 将不起作用。另一个答案描述了当地图准备好接受命令时如何使用“空闲”事件执行操作:***.com/questions/2437683/…

以上是关于Google Maps v3 在地图初始化后调整缩放级别的主要内容,如果未能解决你的问题,请参考以下文章

地图加载后 Google Maps API v3 不会禁用滚轮

Google Maps Api v3 - getBounds 未定义

使用 jquery 调整 Google Maps api v3 DIV 的大小 - 磁贴未正确刷新

google maps js v3 api教程 -- 创建infowindow

瓦片上的事件开始在 Google Maps v3 中加载

google maps js v3 api教程 -- 在地图上添加标记