9


我需要将maxZoom级别设置google.maps.MapTypeId.HYBRID为 21。实际上,他设置为 14(使用萤火虫控制台检查)。

设置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);

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

    var mapTypeRegistry = map.mapTypes;

    var currentMapTypeId = map.getMapTypeId();

    var mapType = mapTypeRegistry.get(currentMapTypeId);

    mapType.maxZoom = 21;
  });

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

谢谢。

4

1 回答 1

11

如果您更改了mapType对象的属性(maxZoomminZoom等...),则在地图类型更改为之后,更改的效果才会出现mapType。例如,如果 currentmapType是,TERRAIN而您更改了TERRAIN,则只有在更改为另一种类型(例如,等)并返回 . 后才能工作。maxZoommaxZoommapTypeROADMAPHYBRIDTERRAIN

而不是设置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});
    }
});
于 2012-05-09T15:20:23.273 回答