3

10 秒のタイムアウトで HTML Geolocation を実装しました。ただし、「失敗」コールバックは 10 秒後にトリガーされません。(ユーザーが自分の位置を共有する許可を拒否した場合、「失敗」コールバックが呼び出されます)。

コードの何が問題になっていますか?

これが私のコードです:

function getLocation(){
        var deferred = $q.defer();
        var success = function(position){
            deferred.resolve(position);
        };
        var failure = function(error){
            deferred.reject(error);
        };
        var options = {timeout: 10000};
        if ($window.navigator && $window.navigator.geolocation) {
            $window.navigator.geolocation.getCurrentPosition(success, failure, options);
        }
        else {
            deferred.reject("Unsupported browser");
        }
        return deferred.promise;
    }

解決した

問題は、ユーザーが自分の場所を共有することに同意した場合にのみ、地理位置情報自体のタイムアウトが開始されることです。ユーザーが同意せず、コールバックがトリガーされない状況に対処したかったのです。解決策は、$timeout を使用して別のタイムアウトを作成することです。

4

0 に答える 0