Google maps 谷歌地图API V3:展示整个世界

Google maps 谷歌地图API V3:展示整个世界,google-maps,Google Maps,如何以编程方式缩放地图,使其覆盖整个世界?创建新地图实例时,可以指定缩放级别 var myOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 缩放值越低,您看到的地图越多,因此值1或2应根据地图画布的大小显示整个地球。创建

如何以编程方式缩放地图,使其覆盖整个世界?

创建新地图实例时,可以指定缩放级别

    var myOptions = {
      zoom:7,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
缩放值越低,您看到的地图越多,因此值1或2应根据地图画布的大小显示整个地球。创建地图后,可以调用:

map.setZoom(8);

要更改缩放级别。

此问题的解决方案是在地图对象上使用fitBounds方法并指定适当的边界。

    var myOptions = {
      zoom:7,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
函数初始化{ 变量映射选项={ 中心:新的google.maps.LatLng0,0, 缩放:1, 最小缩放:1 }; var map=new google.maps.Mapdocument.getElementById'map',mapOptions; var allowedBounds=new google.maps.LatLngBounds 新的google.maps.LatLng85,-180,//地图左上角 新的google.maps.LatLng-85180//右下角 ; var k=5.0; var n=allowedBounds.getNorthEast.lat-k; var e=allowedBounds.getNorthEast.lng-k; var s=allowedBounds.getSouthWest.lat+k; var w=允许边界。getSouthWest.lng+k; var neNew=新的google.maps.LatLng n,e; var swNew=new google.maps.LatLng s,w; boundsNew=new google.maps.LatLngBounds swNew,neNew; Fitbundsboundsnew地图; } google.maps.event.AddDomainListenerWindow“加载”,初始化; 地图{ 宽度:500PX; 高度:500px; }
不能保证不会重复,但通过滥用基本平铺从256 zoom 0开始,并在中的每个增量加倍的事实,您可以使用对数函数选择最佳缩放级别

函数初始化{ 变量映射选项={ 中心:新的google.maps.LatLng0,0, 缩放:Math.ceilMath.log2$window.width-8, }; var map=new google.maps.Mapdocument.getElementById'map',mapOptions; } google.maps.event.AddDomainListenerWindow“加载”,初始化; 地图{ 宽度:100%; 高度:500px; } 下面是我喜欢使用的worldViewFit函数:

function initMap() {
    var mapOptions = {
        center: new google.maps.LatLng(0, 0),
        zoom: 1,
        minZoom: 1
    };
    map = new google.maps.Map(document.getElementById('officeMap'), mapOptions);
    google.maps.event.addListenerOnce(map, 'idle', function() {
        //Map is ready
        worldViewFit(map);
    });
}
function worldViewFit(mapObj) {
    var worldBounds = new google.maps.LatLngBounds(
        new google.maps.LatLng(70.4043,-143.5291),  //Top-left
        new google.maps.LatLng(-46.11251, 163.4288)  //Bottom-right
    );
    mapObj.fitBounds(worldBounds, 0);
    var actualBounds = mapObj.getBounds();
    if(actualBounds.getSouthWest().lng() == -180 && actualBounds.getNorthEast().lng() == 180) {
        mapObj.setZoom(mapObj.getZoom()+1);
    }
}

问题是画布的大小与窗口大小有关。因此,如果能够说它应该显示从坐标A到坐标B的所有内容,那就太好了。此外,选项对象缺少中心属性,根据,是必需的。这不提供问题的答案。您使用的边界是什么?这不提供您自己的问题的答案。swt和nor都是未使用的变量。请在粘贴SO之前清理代码。我在Android上尝试了此解决方案,但遇到了一个异常:java.lang.IllegalArgumentException:南纬超过北纬85.0>-85.0。在切换坐标后,它没有崩溃,但它仍然没有显示整个世界。怎么会?这里有一个问题:我不明白为什么我们需要latlng算法。为什么不能用-90,90,-180,180创建一个边界?这些坐标还多次显示世界地图。这看起来不太好,可能不是大多数人需要的。这些边界坐标最适合我:new google.maps.LatLng-37,-92,new google.maps.LatLng61,60。它并没有展示整个世界,而是大部分有人居住的地方。向任何方向进一步移动都会多次显示世界。@kunal+85/-85在使用墨卡托投影显示时与地图的真实南北边缘不对应。如果使用这些值,将丢失顶部/底部区域的一点地图。@FrederikClaus+90/-90在使用墨卡托投影显示时与地图的真实北/南边缘不对应。如果您使用这些值,您将在地图的顶部/底部看到一个灰色区域。这些数字来自何处?这是如何回答原始问题的?原始问题是以编程方式设置缩放以覆盖整个世界?这不会回答问题+您的代码中不需要jQuery。