GWT Web アプリケーション内で位置情報を取得するために、W3C Geolocation API を使用しています。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()
。