Google Map Map.getBounds()立即致电MAP.FITBOUNDS
-
29-09-2019 - |
题
我在呼叫FitBounds()后直接调用getBounds(),我认为作为近来的地图和缩放以适合界限,我会得到有效的绑定。不幸的是,getBounds()正在返回零。
复制的代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<style>
#map {
width: 800px;
height: 400px;
}
</style>
</head>
<body>
<div id='map'></div>
<script>
var myLatlng1 = new google.maps.LatLng(-38.397, 150.644);
var myLatlng2 = new google.maps.LatLng(-34.897, 150.844);
var myLatLngBounds = new google.maps.LatLngBounds(myLatlng1, myLatlng2);
var myOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: new google.maps.LatLng(0, 0),
zoom: 0
}
var map = new google.maps.Map(document.getElementById("map"), myOptions);
map.fitBounds(myLatLngBounds);
console.log(map.getMapTypeId());
console.log(map.getZoom());
console.log(map.getBounds());
</script>
</body>
</html>
我缺少什么吗?我在文档中找不到有关这种情况的任何东西。我得到的最接近的是关于围绕的注释,上面写着:
如果该地图尚未初始化(即MapType仍然为空),或者尚未设置中心和缩放,则结果为NULL。
请注意,GetZoom也返回未定义。 FitBounds()是否设置此值?
编辑根据Marcelo的建议,我已经使用默认的缩放和中心更新了代码。
解决方案
在BUNDS_CHANGED事件之后,您将必须获得界限。
其他提示
作为 @crazyenigma建议, ,您可以在 bounds_changed
事件被触发:
map.fitBounds(myLatLngBounds);
google.maps.event.addListener(map, 'bounds_changed', function() {
console.log(map.getMapTypeId());
console.log(map.getZoom());
console.log(map.getBounds());
});
以上将打印到您的控制台:
roadmap
6
Object
请注意,如果您只想 getBounds
并做一次,你应该替换 addListener
和 addListenerOnce
(谢谢,@Tomas)。
瓷砖时使用addListeneronce
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
map.setCenter(myLatLngBounds)
});
答案在您自己的报价中。您必须设置中心和缩放,才能初始化地图。
请注意,在MapOptions对象规范的文档中,中心和缩放的值标记为 必需的:
http://code.google.com/apis/maps/documentation/javascript/reference.html#mapoptions
不隶属于 StackOverflow