ズームレベルを変更出来る範囲を設定する
説明
ズームレベルを制限するには、MapType.maxZoom と MapType.minZoom に設定するだけで可能です。Map.mapTypes()でMapTypeRegistryが取得できます。
ドキュメントには、「This class extends MVCObject.(このクラスはMVCObjectを継承しています)」とあるので、説明書きはありませんがget()メソッドがありそうです。
というところで、試してみたら、MapTypeを返してくれました。
あとはこのMapTypeに対して、MapType.maxZoom と MapType.minZoom を設定することでズームレベルを変更することが可能になります。
(MapType.maxZoomは、SATELLITE・HYBRIDでは機能しなかったです)
具体的な方法は下記の通りです。
<script type='text/javascript'>
var mapCanvas;
function initialize() {
var initPos = new google.maps.LatLng(35.127152, 138.910627);
var myOptions = {
center : initPos,
zoom : 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
mapCanvas = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//projectionが使えるようになった段階(地図が初期化された段階)で、ズームレベル変更
google.maps.event.addListenerOnce(mapCanvas, "projection_changed", function(){
mapCanvas.setMapTypeId(google.maps.MapTypeId.HYBRID); //一瞬だけマップタイプを変更
setZoomLimit(mapCanvas, google.maps.MapTypeId.ROADMAP);
setZoomLimit(mapCanvas, google.maps.MapTypeId.HYBRID);
setZoomLimit(mapCanvas, google.maps.MapTypeId.SATELLITE);
setZoomLimit(mapCanvas, google.maps.MapTypeId.TERRAIN);
mapCanvas.setMapTypeId(google.maps.MapTypeId.ROADMAP); //もとに戻す
});
}
function setZoomLimit(map, mapTypeId){
//マップタイプIDを管理するレジストリを取得
var mapTypeRegistry = map.mapTypes;
//レジストリから現在のマップタイプIDのMapTypeを取得する
var mapType = mapTypeRegistry.get(mapTypeId);
//ズームレベルを設定する
mapType.maxZoom = 15; //SATELLITE・HYBRIDは機能しない
mapType.minZoom = 10;
}
google.maps.event.addDomListener(window, "load", initialize);
</script>




