Google Map API v3,点击链接更改地图类型:“地图未定义”

时间:2012-02-23 09:35:45

标签: maps

我正在使用官方文档中最简单的示例:

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);
}

This into a href in HTML part:

onclick="perekluchitDor();">

一切都很简单,但仍然不起作用。当我点击链接时,我能看到的只是错误“地图未定义”。

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

var name1 = "value";
name1 = "value";

在用户定义的函数之外使用,这两者都完全相同。都 创建一个全局变量。可以从任何函数中访问全局变量 当前加载的窗口或框架。如果我们在用户定义的内部使用var name1 函数它是本地的范围,我们只能在函数内部看到它。

您只需要删除var,从map语句中删除。您不需要在函数之外声明映射。