ズームレベルを変更出来る範囲を設定する

説明

ズームレベルを制限するには、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>




サイト内検索
Google Maps APIプログラミングガイド

Google Maps API Expert 4人が共著で執筆。中級者向けに実用に役立つサンプルを中心に紹介! スマートフォン時代に合わせたGoogle Maps APIの使い方も掲載。
詳しくはこちら
Google Maps APIプログラミング入門
Google Maps APIプログラミング入門
全480ページ。Google Maps API ver.2, ver.3, for Flash, Static Maps API v2, Google Maps API Primery, ライセンス…など、Google Maps APIに関連する幅広い内容の本を書きました。
このサイトで公開しているサンプルはもちろん、本のために作ったサンプルも満載です。
詳しくはこちら