2016-05-11 11 views
0

私はGPSでトラックをチタンで作られたアプリ(現時点ではAndroid)に保存したいと思いますが、その方法はわかりません。チタンAppcelerator - GPSのトラックを保存

私の目標は、5秒ごとにユーザーの位置を追跡して電話に保存することです(JSONファイルでは、これがより良い解決策になるはずです)。私はそれがバックグラウンドでも、電話機にもネットワークがない場合にも機能するようにしたい。 また、電話機にネットワークが設定されていれば、そのファイルをサーバーと同期したいと考えています。

可能ですか?

現時点では、私は基本的な関数(appcelerator docから)をsetInterval ...と置いていますが、移動しても位置は常に同じです。私は本当に適切にそれを行う方法がわからない

function save(){ 
    setInterval(function(){ 
     if (Ti.Geolocation.locationServicesEnabled) { 
      Titanium.Geolocation.purpose = 'Get Current Location'; 
      Titanium.Geolocation.distanceFilter = 1 ; 
      Titanium.Geolocation.getCurrentPosition(function(e) { 
       if (e.error) { 
        Ti.API.error('Error: ' + e.error); 
       } else { 
        Ti.API.info(e.coords.altitude); 
        Ti.API.info(e.coords.heading); 
        Ti.API.info(e.coords.latitude); 
        Ti.API.info(e.coords.longitude); 
        Ti.API.info(e.coords.speed); 

        alert('LAT : '+e.coords.latitude+' LONG : '+e.coords.longitude+' SPEED : '+e.coords.speed+' ALT : '+e.coords.altitude); 
       } 
      }); 
     } else { 
      alert('Please enable location services'); 
     } 

    }, 5000); 
} 

save_button.addEventListener('click', function(){ 

    save(); 

}); 

は、ここに私のコードです。一部の人々は... :)

どうもありがとう:)

+0

ジオロケーションを取得するコードスニペットを投稿できますか? – Soumya

+0

GPS位置をJSONファイルではなくSQLiteデータベース(Ti.Database)に保存します。さらに重要な点は、カスタムモジュールを使用してGPSの場所の大幅な変更を追跡することです。提供されたジオロケーションモジュール(Ti.Geolocation)は、Android上では非常に遅く、不正確です。 – danny005

+0

@スーマ私のコードスニペットを追加しました:) –

答えて

1

私を助けることができる場合は、GPSの位置を追跡したい場合には、リスナーのあなたがたEventListener Ti.Geolocation.addEventListener('location', function(e){ //same response returned by Titanium.Geolocation.getCurrentPosition() });

を設定した場合、感度良くなるのですこのように調整することができます

Ti.Geolocation.Android.manualMode = true; 

function androidProviderConfig(provider) { 
    var providerGps = Ti.Geolocation.Android.createLocationProvider({ 
     name : provider, 
     minUpdateDistance : 100, 
     //minUpdateTime: 60 
    }); 
    Ti.Geolocation.Android.addLocationProvider(providerGps); 
    var gpsRule = Ti.Geolocation.Android.createLocationRule({ 
     provider : provider, 
     accuracy : 50, 
     maxAge : 20 * 60 * 1000, // 1h 
     minAge : 10 * 1000 // 10 seconde 
    }); 
    Ti.Geolocation.Android.addLocationRule(gpsRule); 
} 

//androidProviderConfig(Ti.Geolocation.PROVIDER_NETWORK); 
//or 
androidProviderConfig(Ti.Geolocation.PROVIDER_GPS); 
Ti.Geolocation.addEventListener('location', function(e){/*your callback*/}); 
関連する問題