我正在使用官方文档中最简单的示例:
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();">
一切都很简单,但仍然不起作用。当我点击链接时,我能看到的只是错误“地图未定义”。
我想知道我在这里做错了什么?
答案 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语句中删除。您不需要在函数之外声明映射。