2016-04-29 8 views
0

私のアプリケーションでmvvmcrossロケーションプラグインを使用して位置を取得しようとしていますが、CurrentLocationLastSeenLocationは常にnullです。実際のアンドロイドデバイスでGPSサービスが有効になっており、アンドロイドマニフェストでパーミッションが設定されています。私はgenymotionに関するアプリケーションをテストしました。私がGPSを有効にすると動作します。私は理解できません、理由は、位置プロバイダは、実際のデバイス上の場所を提供していません。ここ は、コードサンプルである:Mvvmcross場所プラグインの現在の位置と最後に見た場所がnullです

private void GetLocation() 
    { 
     IMvxLocationWatcher _locationWatcher = Mvx.Resolve<IMvxLocationWatcher>(); 
     _locationWatcher.Start(new MvxLocationOptions() {Accuracy = MvxLocationAccuracy.Fine}, OnLocation, OnError); 
     try 
     { 
      Lat = _locationWatcher.CurrentLocation.Coordinates.Latitude; 
      Lng = _locationWatcher.CurrentLocation.Coordinates.Longitude; 
     } 
     catch 
     { 
      Lat = _locationWatcher.LastSeenLocation.Coordinates.Longitude; 
      Lng = _locationWatcher.LastSeenLocation.Coordinates.Longitude; 
     } 
    } 
+0

端末に搭載されているAndroidのバージョンはどれですか? – Giorgi

+0

@Giorgi私がテストしたいくつかの話題があります:4.1.1,4.2.2,4.4.2,5.1 –

答えて

0

位置情報がOnLocationコールバックが呼び出された後にのみ使用可能です。たとえば、場所を取得する方法は次のとおりです。

private void GetLocation() 
{ 
    IMvxLocationWatcher _locationWatcher = Mvx.Resolve<IMvxLocationWatcher>(); 
    _locationWatcher.Start(new MvxLocationOptions() {Accuracy = MvxLocationAccuracy.Fine}, (location) => { 
     // Use location parameter to get location information}, 
    OnError); 
} 
+0

ありがとうございます。場所が変更されたときにOnLocationが開始されますか?例:場所を取得し、ボタンが押されたときに送信する必要があります。しかし、デバイスが場所を変更しない場合、OnLocationは起動しません。 –

関連する問題