Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maps 谷歌地图API v3,点击链接更改地图类型;“地图未定义”;_Maps - Fatal编程技术网

Maps 谷歌地图API v3,点击链接更改地图类型;“地图未定义”;

Maps 谷歌地图API v3,点击链接更改地图类型;“地图未定义”;,maps,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(

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

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);
}
我添加了此选项以动态更改地图类型,如官方文档中所述:

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部分中的href:

onclick=“perekluchitDor();”>
一切都很简单,但仍然不起作用。我所能看到的只是当我点击链接时出现的错误“map is not defined”


我想知道我做错了什么?

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

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

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