0

デバイスの位置を表すオブジェクトを返す関数を作成しようとしています:

  function getDevicePosition () {
    var positionObject;
    if (isDeviceReady) {
        navigator.geolocation.getCurrentPosition(function (position) {
            ;
            positionObject = position;
            console.log('location updated');
            console.log(positionObject.coords.longitude);//1. works
        }, function (err) {
            console.log('Failed to get device position' + err);
            return null;
        });

    } else {
        warnUser();
        return null;
    }
    console.log(positionObject.coords.longitude);//2. doesnt work as positionObject is null.
    return positionObject;
}

おそらく私は私の質問を言い換える必要があります。ステートメント 1 とステートメント 2 をマークするコメントを追加したことに注意してください。ステートメント 1 で位置オブジェクトを初期化した場合、ステートメント 2 で未定義なのはなぜですか?

4

1 に答える 1

1

タグから判断するandroidと、Android デバイスでテストしていると思います。

その場合は、AndroidManifest.xmlファイルに適切な権限を追加する必要があります。

具体的に

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />

詳細はこちらをご覧ください

于 2012-09-28T09:21:11.947 に答える