ズームレベルを変更出来る範囲を設定する
Google Maps API v2でズームレベルの範囲を制限するには、GMapType.getMinimumResolution()とgetMaximumResolution()をオーバーライドすることで可能でした。
参照:ズームコントローラのズーム範囲を制限する(Google Maps API v2)
Google Maps API v3では、MapType.maxZoom と MapType.minZoom に設定するだけで可能です。Map.mapTypes()でMapTypeRegistryが取得できます。
ドキュメントには、「This class extends MVCObject.(このクラスはMVCObjectを継承しています)」とあるので、説明書きはありませんがget()メソッドがありそうです。
というところで、試してみたら、ちゃんとMapTypeを返してくれました。
あとはこのMapTypeに対して、MapType.maxZoom と MapType.minZoom を設定することでズームレベルを変更することが可能になります。
具体的な方法は下記の通りです。
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.co.jp/maps/api/js?sensor=false&hl=ja"></script>
<script type="text/javascript">
function initialize() {
var initPos = new google.maps.LatLng(35.127152, 138.910627);
var myOptions = {
navigationControl : true,
center : initPos,
zoom : 5,
disableDefaultUI : false,
mapTypeId : google.maps.MapTypeId.ROADMAP
};
var map_canvas = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//マップタイプが設定(変更)されたのを見計らって、ズームレベルの変更を行う
google.maps.event.addDomListener(map_canvas, "maptypeid_changed", function(){
//マップタイプIDを管理するレジストリを取得
var mapTypeRegistry = map_canvas.mapTypes;
//現在のマップタイプIDを取得
var currentMapTypeId = map_canvas.getMapTypeId();
//レジストリから現在のマップタイプIDのMapTypeを取得する
var mapType = mapTypeRegistry.get(currentMapTypeId);
//ズームレベルを設定する
mapType.maxZoom = 15;
mapType.minZoom = 10;
});
}
window.onload = initialize;
</script>
</head>
<body >
<div id="map_canvas" style="width:100%; height:500px"></div>
</body>
</html>


