我正在使用Google maps api V3。我需要获得getSouthWest
&的价值。我的地图的getNorthEast
范围。要执行此操作,需要触发'bounds_changed'事件以获取新值。这一切都很好,但是,我需要从事件外部访问这些值并传递给服务器端函数(更具体地说,我不希望每次更改映射边界时都调用我的服务器端函数)。
我的代码是:
//Global
var sw, nw, Searchbounds;
function myFunc(){
google.maps.event.addListener(map, 'bounds_changed', function() {
Searchbounds = map.getBounds();
sw = Searchbounds.getSouthWest();
ne = Searchbounds.getNorthEast();
});
CallServerSideWebService(sw.lat(), ne.lng(), ne.lat(), ne.lng());
}
执行此代码时,我收到错误消息sw is undefined
。
如果有人知道如何使用当前方法解决此问题;或者在不使用事件的情况下访问getBounds()
函数,那么我将非常感激!
答案 0 :(得分:1)
这对我来说似乎是一个时间问题,而不是范围问题。
我认为API可能正在改变单个对象引用,而您仍然坚持这一点,但似乎不太可能。如果是这种情况,请尝试存储lat和lng值,而不是nw和sw,因为它们是数字基元。
但是,您必须能够访问事件之外的地图。它看起来很简单:
function myFunc() {
var searchBounds = map.getBounds();
var sw = searchBounds.getSouthWest();
var ne = searchBounds.getNorthEast();
CallServerSideWebService(sw.lat(), ne.lng(), ne.lat(), ne.lng());
}
答案 1 :(得分:0)
我假设你实际上是在定义变量?他们在你的代码中被注释掉了......
假设它们被正确定义,它们可能不是您期望的类型 - 例如sw可能存在并且填充的ut可能没有lat()
属性 - 也许latitude()
?
尝试在边界更改后检查调试器中的sw对象(firefox中的firebug插件对此非常有用)
编辑代码已被更改:
在调用bounds changed函数之前调用服务器端函数...
试试这个:
var sw, nw, Searchbounds;
function myFunc(){
google.maps.event.addListener(map, 'bounds_changed', function() {
Searchbounds = map.getBounds();
sw = Searchbounds.getSouthWest();
ne = Searchbounds.getNorthEast();
//Moved inside the event handler
CallServerSideWebService(sw.lat(), ne.lng(), ne.lat(), ne.lng());
});
}