前提・実現したいこと
Xamarin.FormsでGeolocatorを使用して一定間隔で位置情報を取得したいです。
現在サンプルとしてボタンを押したら5秒に一度現在の位置情報を取得し、結果をListViewに追加するというアプリを制作しています。
発生している問題・エラーメッセージ
ボタンを押したら位置情報を取得することまではできているのですが、以下のソースでは位置情報が更新されません。
C#
1private async void Button_Clicked(object sender, EventArgs e) 2 { 3 IGeolocator geolocator = CrossGeolocator.Current; 4 geolocator.DesiredAccuracy = 50; 5 Position position = await geolocator.GetPositionAsync(timeout: new TimeSpan(10000)); 6 7 Device.StartTimer(TimeSpan.FromMilliseconds(5000), () => 8 { 9 position = geolocator.GetPositionAsync(timeout: new TimeSpan(10000)); 10 lists.Add(new GeoLocationData { GeoLocation = position.Latitude + " : " + position.Longitude }); 11 12 return !IsStarted; 13 }); 14 }
そこで、該当のソースコードのような形に変えたのですがエラーが発生してしまいます。
'System.Threading.Tasks.Task<Plugin.Geolocator.Abstractions.Position>' を 'Plugin.Geolocator.Abstractions.Position' に暗黙的に変換できません
該当のソースコード
C#
1private async void Button_Clicked(object sender, EventArgs e) 2 { 3 Position position; 4 IGeolocator geolocator = CrossGeolocator.Current; 5 geolocator.DesiredAccuracy = 50; 6 7 Device.StartTimer(TimeSpan.FromMilliseconds(5000), () => 8 { 9 position = geolocator.GetPositionAsync(timeout: new TimeSpan(10000)); 10 lists.Add(new GeoLocationData { GeoLocation = position.Latitude + " : " + position.Longitude }); 11 12 return !IsStarted; 13 }); 14 }
試したこと
C#
1position = geolocator.GetPositionAsync(timeout: new TimeSpan(10000));
ここで実装しているTimeSpanの意味を理解しきれていません。
補足情報(FW/ツールのバージョンなど)
こちらのサイトを参考にさせていただきました。
https://www.buildinsider.net/mobile/xamarintips/0063

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/27 01:49 編集