我正在使用 W3C Geolocation API 来检索 GWT Web 应用程序中的位置信息。Geolocation API 的构建方式是在检索到位置位置后立即调用回调函数。
我当前的测试代码如下所示:
public native void getCoordinates() /*-{
function onPositionUpdate(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var alt = position.coords.altitude;
// not OK,- doesn't get invoked, and function execution stops at this point
this.@com.test.GpsPanel::testMethod()();
alert("Coordinates retrieved: " + lat + ";" + lng + ";" + alt);
}
function onPositionUpdateFailed(error) {
alert("Some error");
}
if(navigator.geolocation) {
// OK when invoked somewhere here
this.@com.test.GpsPanel::testMethod()();
navigator.geolocation.getCurrentPosition(onPositionUpdate, onPositionUpdateFailed);
} else {
alert("Geolocation is not available");
}
}-*/;
我试图证明该方法testMethod
不会从内部方法调用onPositionUpdate
。甚至更多:之后没有显示警报(当 testMethod 调用被删除时它会显示),但在日志中没有发现警告或错误。
我的问题是:如何从内部函数中引用此方法?我觉得这this.
不是内部功能的正确参考。如果无法正确引用 Java 类,那么可能的解决方法是什么?请注意,我不能将其他任何东西传递给函数onPositionUpdate()
,因为它是一个回调函数。