修改Google地图类型的最大缩放级别

jbr*_*rnd 8 javascript google-maps google-maps-api-3


我需要设置为21 的maxZoom级别google.maps.MapTypeId.HYBRID.实际上,他设置为14(用firebug控制台检查).

设置google.maps对象'maxZoom' 的属性在这种情况下不起作用,我已经尝试修改google.maps.mapTypes对象,但没有成功.

var options = {
    center: new google.maps.LatLng(lat_centre,lng_centre),   
    zoom: 14, 
    maxZoom: 21,
    mapTypeId: google.maps.MapTypeId.TERRAIN,   
    panControl: true,
    zoomControl: true,
    mapTypeControl: false,
    scaleControl: false,
    streetViewControl: false,
    overviewMapControl: false,
    disableDoubleClickZoom: true,
    styles: [ 
        {featureType: "poi", stylers: [{visibility: "off"}]} 
        ]                   
    };

    map = new google.maps.Map(document.getElementById("map_container"),options);
Run Code Online (Sandbox Code Playgroud)

google.maps.event.addListener(map, 'tilesloaded', function(event){

    var mapTypeRegistry = map.mapTypes;

    var currentMapTypeId = map.getMapTypeId();

    var mapType = mapTypeRegistry.get(currentMapTypeId);

    mapType.maxZoom = 21;
  });
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法增加mapType HYBRID的缩放级别?

谢谢.

Eng*_*eer 9

如果您更改了mapType对象的属性(maxZoom,minZoom等等),则更改的效果将在地图的类型更改为此才会占用mapType.例如,如果当前mapTypeTERRAIN的,你改变TERRAINmaxZoom,maxZoom只会改变工作后mapType,以另一种类型(例如ROADMAP,HYBRID等..),并返回TERRAIN.

相反,设定mapTypemaxZoom选项,使用核地图的maxZoom选项.为"maptypeid_changed"事件添加侦听器,当事件发生时,更改以下maxZoom选项map:

google.maps.event.addListener(map, 'maptypeid_changed', function(event){
    if( map.getMapTypeId() === google.maps.MapTypeId.TERRAIN ){
        map.setOptions({maxZoom:/*For example*/5});
    }else 
    if( map.getMapTypeId() === google.maps.MapTypeId.ROADMAP ){
        map.setOptions({maxZoom:/*For example*/8});
    }//Etc...
    else{
        map.setOptions({maxZoom:/*For example*/21});
    }
});
Run Code Online (Sandbox Code Playgroud)