2012-02-23 40 views
1

我使用从官方文档simpliest例如:谷歌地图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); 
} 

我已经添加了这个改变地图动态类型作为官方文档中描述:

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

这成HTML部分A HREF:

onclick="perekluchitDor();">

一切都很简单,但仍然无法正常工作。我可以看到的是当点击链接时出现“地图未定义”错误。

我想知道我在这里做错了什么?

回答

1

这是一个可变范围问题。您需要在函数之外声明map,如下所示(第一行代码)。

 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即可。你不需要在你的函数之外声明map。