геолокация телефонной связи всегда терпит неудачу по таймауту

Я использую Sencha-Touch 2.0 и PhoneGap 2.0.0 в своем приложении, чтобы получить местоположение пользователя. При запуске на моем locahost все работает просто отлично. Тем не менее, при загрузке .apk на устройство моего Android 15 API (с использованием eclipse и плагин adt), каждый вызов getCurrentLocation или watchPosition никогда не возвращается ...

вот мой код:

geoOn: function(){
    var geoReady = navigator.geolocation || undefined;

    var onSuccess = function(position){
            Top5.app.alert('Geolocation success '+String(position.coords.latitude) + ' ' + String(position.coords.longitude),'Geolocation');
            var scope = Ext.getCmp('nestedList');
            scope.updateDistance(position.coords);
    };

    var onFailure = function(error){Top5.app.alert('Geolocation failed: '+String(error.code) + ' '+String(error.message),'Geolocation');};
    if (geoReady) {
        this.watchId = navigator.geolocation.watchPosition(onSuccess ,onFailure,{timeout:6000,maximumAge: 3000,enableHighAccuracy: true});    
    }
    else{
        Ext.device.Geolocation.watchPosition({
                 frequency: 3000, // Update every 3 seconds
                 callback: function(position) {
                        this.updateDistance(position.coords);
                 },
                 failure: function() {
                   console.log('Geolocation Failure!');
                 },
                 scope:this
        });
    }
 },
 geoGet: function(){
     var geoReady = navigator.geolocation || undefined;
     if (geoReady) {

         var onSuccess = function(position){
             Top5.app.alert('Geolocation successful!!!');
             var scope = Ext.getCmp('nestedList');
             scope.updateDistance(position.coords);          
         };
         var onFailure = function(error){Top5.app.alert('Geolocation failed: '+String(error.code) + ' '+String(error.message),'Geolocation');};
         navigator.geolocation.getCurrentPosition(onSuccess,onFailure);
     }
     else{}
 },
 geoOff:function(){

     var geoReady = navigator.geolocation || undefined;
     if (geoReady) {
         navigator.geolocation.clearWatch(this.watchId);
         this.watchId = null;
     }
     else{
         Ext.device.Geolocation.clearWatch();
     }

 },
 updateDistance:function(coords){
     Top5.app.alert('updateDist','');
     var scope = Ext.getCmp('nestedList');
     var lat = coords.latitude,lon = coords.longitude;
     var store = scope.getStore();
     var i,record;
     for(i = 0; i < store.data.all.length; i++)
     {
         record = store.data.all[i];
         if(record.data.locationX){
            record.set('distance',Top5.app.getDistance(record.data.locationX,record.data.locationY,lat,lon).toFixed(3));
         }   
     }
}

ОБНОВИТЬ: Поэтому я вышел из своего здания, и оно сработало ... Мне нужно чаще выходить на улицу.
Однако, когда я отключаю gps, я думал, что geoLocation найдет мое местоположение, используя соединение Wi-Fi - но это не удается (я устанавливаю enableHighAccuracy: false). Почему это?

ОБНОВИТЬ: Позвольте мне перефразировать мой вопрос: предполагает ли navigator.geolocation.watchPosition работать как с сигналом GPS, так и с сигналами wifi / g3? Как я могу определить местоположение пользователя, используя только интернет? в настоящее время мой код работает только с GPS, и когда эта опция отключена или сигнал заблокирован, геолокация не работает.

Ответы на вопрос(11)

Ваш ответ на вопрос