2012-02-23 15 views
1

を「マップが定義されていない」私は公式ドキュメントから最も単純例を使用しています:GoogleマップAPI v3では、:

function initialize() { 
    var mapCent = new google.maps.LatLng($shirota, $dolgota); 
    var myOptions = { 
    zoom: $uvelichenie, 
    center: mapCent, 
    mapTypeId: google.maps.MapTypeId.SATELLITE 
}; 

var map = new google.maps.Map(
     document.getElementById("map_canvas"), 
     myOptions); 
} 

私は動的にマップタイプを変更するには、これを追加しました

onclick="perekluchitDor();"> :HTML部分のhrefに

function perekluchitDor() { 
    map.setMapTypeId(google.maps.MapTypeId.ROADMAP); 
} 

この:公式マニュアルに記載されています

すべてはかなりシンプルですが、それでも動作しません。私が見ることができるのは、リンクをクリックすると「地図が定義されていません」というエラーです。

私はここで何が間違っているのだろうか?

答えて

1

これは可変範囲の問題です。 mapを関数外に宣言する必要があります(コードの1行目)。ユーザー定義関数の外で使用

 var map; 
     function initialize() { 
      var mapCent = new google.maps.LatLng($shirota, $dolgota); 
      var myOptions = { 
      zoom: $uvelichenie, 
      center: mapCent, 
      mapTypeId: google.maps.MapTypeId.SATELLITE 
      }; 

      map = new google.maps.Map(
      document.getElementById("map_canvas"), 
      myOptions); 
     } 
1
var name1 = "value"; 
name1 = "value"; 

、これらの両方を正確に同じことを行います。両方とも グローバル変数を作成します。グローバル変数は、現在ロードされている任意の ウィンドウまたはフレーム内の任意の関数からアクセスできます。ユーザー定義の 関数内でvar name1を使用すると、スコープ内でローカルになります。関数内でのみvar name1を見ることができます。

mapステートメントから実行されたvarのみを削除する必要があります。関数の外にマップを宣言する必要はありません。

関連する問題