12437


`srcollwheel:true`と`scrollwheel:false`をボタンによって切り替えをしたいのですが、タイトルのエラー：`Uncaught
TypeError: Cannot read property 'setOptions' of undefined`が吐き出されてしまいます。

[code]

    var map;
    
    function initialize() {
      var latlng = new google.maps.LatLng(35.681452800000000, 139.765979600000000);
      var myOptions = {
        zoom: 13,
        center: latlng,
        panControl: false,
        scrollwheel: false,
        zoomContorl: false,
        disableDefaultUI: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      var map = new google.maps.Map(document.getElementById("sp_map_canvas"), myOptions);
      var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: "hoge"
      });
    
    }
    
    google.maps.event.addDomListener(window, 'load', initialize);
    
    function toEnable() {
      var myOptions = {
        scrollwheel: true
      };
      map.setOptions(myOptions);
    }
    
    function toDisable() {
      var myOptions = {
        scrollwheel: false
      };
      map.setOptions(myOptions);
    }
    
    $(document).ready(function() {
      var scrollSwitch = $('#scrollSwitch');
      scrollSwitch.on('click'function() {
        if ($(this).attr('data-toggled') == 'on') {
          $(this).attr('data-toggled', 'off');
          toEnable();
        } else {
          $(this).attr('data-toggled', 'on');
          toDisable();
        }
      })
    })
[/code]

[code]

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    
    <div id="sp_map_canvas"></div>
    <button id="scrollSwitch" data-toggled="on">Switch</button>
[/code]


CC BY-SA 3.0
2015-05-20T02:59:06.690
10401
2015-07-17T05:35:23.723
8500
question
google-maps
Google Map ApiでCannot read property 'setOptions' of undefinedエラーが出る


この問題起こす原因は多分`map変数のスコープ`です。

kphex氏のコードの１行目に`map`変数を宣言したですけど、`initialize()`の中にまだ、もう一度`map`変数を宣言しまった。だから、`new
google.maps.Map(document.getElementById("sp_map_canvas"),
myOptions)`のスコープは`initialize()`だけに成りしまった。このせい`toEnable()`の中の`map`の中は`undefined`です。

  

`var map = new google.maps.Map(document.getElementById("sp_map_canvas"),
myOptions);`  
  
から  
  
`map = new google.maps.Map(document.getElementById("sp_map_canvas"),
myOptions);`  
  
へに修正すると、エラーを消えれると思います。


CC BY-SA 3.0
2015-07-17T05:35:23.723
12437
2015-07-17T05:35:23.723
8229
10401
answer