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

説明

ズームレベルを制限するには、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プログラミング入門 第2版
Google Maps APIプログラミング入門 第2版
全520ページ。Google Maps API version3を中心に公式ドキュメントより詳しく解説しています。
詳しくはこちら
Google Maps APIプログラミングガイド

Google Maps API Expert 4人が共著で執筆。中級者向けに実用に役立つサンプルを中心に紹介! スマートフォン時代に合わせたGoogle Maps APIの使い方も掲載。
詳しくはこちら