Google Map 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 部分的 href 中:
onclick="perekluchitDor();">
一切都非常简单,但仍然不起作用。当我单击链接时,我只能看到错误“地图未定义”。
我想知道我在这里做错了什么?
I'm using simpliest example from the official documentation:
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);
}
I've added this to change map type dynamically as described in the official documentation:
function perekluchitDor() {
map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
}
This into a href in HTML part:
onclick="perekluchitDor();">
Everything is pretty simple, but still doesn't work. All that I can see is the error "map is not defined" when I click the link.
I wonder what am I doing wrong here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个变量范围问题。您需要在函数外部声明
map
,如下所示(第一行代码)。This is a variable scope issue. You need to declare
map
outside of your functions, as below (1st line of code).在用户定义函数之外使用,两者的作用完全相同。两个都
创建一个全局变量。全局变量可以从任何函数中访问
当前加载的窗口或框架。如果我们在用户定义的内部使用 var name1
函数的作用域是局部的,我们只能在函数内部看到它。
您只需删除 map 语句后面的 var 即可。您不需要在函数之外声明映射。
Used outside of a user-defined function, both of these do exactly the same. Both
create a global variable. A global variable can be accessed from any function in any
window or frame that is currently loaded. If we use var name1 inside a user-defined
function it is local in scope, we only can see it inside the function.
You need to only remove var, behined from map statement. You don't need to declare map outside of your functions.