2012-05-09 87 views
5


我需要將maxZoom級別的google.maps.MapTypeId.HYBRID設置爲21.實際上,他已設置爲14(使用螢火蟲控制檯進行檢查)。
修改Google地圖類型的最大縮放級別

設置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的縮放級別的方法嗎?

謝謝。

+0

你能告訴我們,當你試圖設置的代碼編輯的最大變焦 – Jorge

+0

代碼! – jbrtrnd

回答

7

如果更改mapType對象的屬性(maxZoomminZoom,等...),更改的效果將採取地方後,才地圖的類型將被更改爲mapType。例如,如果當前mapTypeTERRAIN,你改變了TERRAINmaxZoommaxZoom將只改變mapType另一種類型後(例如ROADMAPHYBRID,等..),並返回到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}); 
    } 
}); 
+1

我已將您的解決方案和我的'tilesloaded'事件結合起來。有用 !謝謝 ! – jbrtrnd

+1

@ JBRTRND-DEV當然,它應該可以使用'tilesloaded''事件,但它不是一個最佳解決方案。 – Engineer

+0

google.maps.'Event'對象是大寫的 –

相關問題