0

所以我有我的简单initialize()功能,它工作正常,直到我需要能够更新纬度和经度坐标。我选择通过使用初始 lat & lng 坐标定义变量并将它们移出initialize()函数(在内部引用)并使用更新后的坐标更新这些变量的值(然后重新初始化地图)来做到这一点。

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

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

代码看起来基本上是这样的

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

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

那么我怎样才能使这项工作呢?如果我没有在initialize()函数之外定义它,那么我就无法更新变量并显示新坐标。

4

1 回答 1

1

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

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

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

对于演示这一点的 Fiddles,请参阅在函数外部使用 {0,0} 以获得与“函数内部”示例相同的效果,并在函数外部为 Lat/Long 使用有意义的值

于 2012-10-30T19:58:51.063 回答