javascript - 无法定义Google Maps API lat& lng在初始化函数之外?

时间:2012-10-30 19:41:39

标签: javascript google-maps

所以我有一个简单的initialize()函数,它工作正常,直到我需要能够更新lat& lng坐标。我选择用我的初始lat&定义变量来做到这一点。 lng坐标并将它们移动到initialize()函数之外(在里面引用),并用更新的坐标更新这些变量的值(然后重新初始化地图)。

我不知道为什么,但是现在我刷新页面时没有加载地图。我改变它以使用变量定义函数内部的坐标,它工作正常。只有当我在函数之外定义它们时才会起作用。

但是如果你在控制台中调用initialize(),那就不会像在此更改之前那样在页面加载时调用它。

代码看起来基本上就像这个

var latcoord= 1234;
var lngcoord= 1234;
function initialize() {
    var myLatlng = new google.maps.LatLng(latcoord, lngcoord);
    //ETC
}

这是我用来重现问题的小提琴:here

那么我怎样才能做到这一点?如果我没有在initialize()函数之外定义它,那么我无法更新变量并显示新坐标。

1 个答案:

答案 0 :(得分:1)

这与变量范围无关,也与您正在使用的值有关。

if(latcoord === false) {// DOESN'T WORK
    latcoord = 120;
    lngcoord = 100;
}

使用“DOES WORK”块时,您将为其分配值'false',这将使Maps API将其视为{0,0}。当你为它们分配{120,100}时,你无法获得有意义的结果,因为{120,100}在地球上没有有意义的表示(最大纬度为90 - 北极)。

对于展示此问题的小提琴,请参阅using {0,0} outside the function to get the same effect as your 'inside the function' exampleusing meaningful values for Lat/Long outside the function