0

私はこれについて非常に多くの投稿を読みました。解決策が見つかりませんでした。必要なのは、現在の位置を更新することです。したがって、移動を続ける場合は、(5 秒ごとに) 自分の新しい位置を知る必要があります。watchPosition が IOS で動作しないことを理解しています。

私は公式の例から始めて、setIntervalと混ぜます

// Wait for PhoneGap to load
        //
        document.addEventListener("deviceready", onDeviceReady, false);

        // PhoneGap is ready
        //
        function onDeviceReady() {
            setInterval(navigator.geolocation.getCurrentPosition(onSuccess, onError),5000);
        }

        // onSuccess Geolocation
        //
        function onSuccess(position) {
            alert("ENTRY");
            var element = document.getElementById('geolocation');
            element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
            'Longitude: '          + position.coords.longitude             + '<br />' +
            'Altitude: '           + position.coords.altitude              + '<br />' +
            'Accuracy: '           + position.coords.accuracy              + '<br />' +
            'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
            'Heading: '            + position.coords.heading               + '<br />' +
            'Speed: '              + position.coords.speed                 + '<br />' +
            'Timestamp: '          + new Date(position.timestamp)          + '<br />';
        }

        // onError Callback receives a PositionError object
        //
        function onError(error) {
            alert('code: '    + error.code    + '\n' +
                  'message: ' + error.message + '\n');
        }

その結果、すべての情報が 1 回だけ表示されます。そして、停止します。誰かが私を助けることができますか?

4

3 に答える 3

2

watchPosition は、最新の Cordova (Phonegap) を使用する iOS で問題なく動作します。まさにあなたが望んでいるように見えるので、その方法をもう一度試してみてください。

于 2012-05-02T11:28:06.530 に答える
2

私は同じ問題を抱えています.Webアプリに関係なく、IOS6でウォッチポジションコールバックが発生しません。IOS6 が watchPosition を壊したようです。開始時に1回か2回発火し、それだけです。いったん失敗すると、watch または getposition のさらなる呼び出しは、成功または失敗のコールバックを起動しません。

私が見つけている回避策は、IOS 6 で導入されたマップ アプリを開き、場所の矢印をタップして自分自身を見つけることです。これを試した後、コールバックは1秒ごとに期待どおりに起動します。

また、GPS 受信機が使用されている場所の外にいる限り、正常に動作し続けるようです。

Appleにバグとして提出しました。

私が収集できるのは、マップが初期化ルーチンを実行して API を開くことだけです...

WatchPosition は、IOS6 まで完全に機能していました。

于 2012-09-23T16:20:53.947 に答える
0

問題は、 functionの代わりに setInterval にを渡していることだと思います。次のようなものが必要です。

setInterval( function(){
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
},
5000);

あなたが今持っているように、getCurrentPositionは一度実行され、位置をsetInterval関数に返します...そして位置のは5秒ごとに呼び出されます(getCurrentPosition関数ではありません)。これはかなり無意味です。

于 2012-10-10T14:11:45.063 に答える