0

Я пытаюсь получить текущую долготу и широту с помощью Cordova/PhoneGap. Но я получаю эту ошибку на неудачу функции: поискnavigator.geolocation.getCurrentPosition не работает в Windows Phone 8.1

Позиции истек.

Я поставил maximumAge 5000 и тайм-аут, чтобы 10000.

Это Кордова фрагмент кода я использую:

getCurrentPosition:function(successCallback, errorCallback, options) { 

    argscheck.checkArgs('fFO', 'geolocation.getCurrentPosition', arguments); 
    options = parseParameters(options); 

    var timeoutTimer = {timer:null}; 

    var win = function(p) { 
     clearTimeout(timeoutTimer.timer); 
     if (!(timeoutTimer.timer)) { 

      return; 
     } 
     var pos = new Position(
      { 
       latitude:p.latitude, 
       longitude:p.longitude, 
       altitude:p.altitude, 
       accuracy:p.accuracy, 
       heading:p.heading, 
       velocity:p.velocity, 
       altitudeAccuracy:p.altitudeAccuracy 
      }, 
      (p.timestamp === undefined ? new Date() : ((p.timestamp instanceof Date) ? p.timestamp : new Date(p.timestamp))) 
     ); 
     geolocation.lastPosition = pos; 
     successCallback(pos); 
    }; 
    var fail = function(e) { 
     clearTimeout(timeoutTimer.timer); 
     timeoutTimer.timer = null; 
     var err = new PositionError(e.code, e.message); 
     if (errorCallback) { 
      errorCallback(err); 
     } 
    }; 

    if (geolocation.lastPosition && options.maximumAge && (((new Date()).getTime() - geolocation.lastPosition.timestamp.getTime()) <= options.maximumAge)) { 
     successCallback(geolocation.lastPosition); 
     } else if (options.timeout === 0) { 
     fail({ 
      code:PositionError.TIMEOUT, 
      message:"timeout value in PositionOptions set to 0 and no cached Position object available, or cached Position object's age exceeds provided PositionOptions' maximumAge parameter." 
     }); 

    } else { 
     if (options.timeout !== Infinity) { 
      timeoutTimer.timer = createTimeout(fail, options.timeout); 
     } else { 
      timeoutTimer.timer = true; 
     } 
     exec(win, fail, "Geolocation", "getLocation", [options.enableHighAccuracy, options.maximumAge]); 
    } 
    return timeoutTimer; 
}, 

Все вроде бы нормально. Но он не вызывает successCallback функция. Я не знаю, что я делаю неправильно.

ответ

1

Я не знаю, если вы решили эту проблему, и я не вижу, какие опции вы отправляете к методу getCurrentPosition, но я сделал его работу на wp8.1 с этими параметрами:

{ 
    timeout: 20000, 
    enableHighAccuracy: true, 
    maximumAge: 90000 
} 
Смежные вопросы