使用GetPositionAsync Geolocator

时间:2019-05-27 15:01:17

标签: c# xamarin geolocation task

在尝试使用Plugin.Geolocator获取一些地理位置信息时,出现异常错误:System.Threading.Tasks.TaskCanceledException

这是我得到的异常:System.Threading.Tasks.TaskCanceledException:任务被取消。   在Plugin.Geolocator.GeolocatorImplementation.GetPositionAsync(System.Nullable 1[T] timeout, System.Nullable 1 [T] cancelToken,System.Boolean includeHeading)[0x004d3]中,位于:0   在/Users/khalidharkati/Projects/interface_test/interface_test/MainPage.xaml.cs:140中的interface_test.MainPage.CreateMainPageAsync()[0x0018b]   在/Users/khalidharkati/Projects/interface_test/interface_test/App.xaml.cs:23中的interface_test.App.OnStart()[0x0001a]   在<58604b4522f748968296166e317b04b4>:0中的System.Runtime.CompilerServices.AsyncMethodBuilderCore + <> c.b__6_0(System.Object状态)[0x00000]处   在Android.App.SyncContext + <> c__DisplayClass2_0.b__0()[0x00000]在<788a34f7a7b84486905dfde786529d42>:0中   在<788a34f7a7b84486905dfde786529d42>:0中的Java.Lang.Thread + RunnableImplementor.Run()[0x00008]中   在<788a34f7a7b84486905dfde786529d42>:0中的Java.Lang.IRunnableInvoker.n_Run(System.IntPtr jnienv,System.IntPtr native__this)[0x00009]   在(包装器动态方法)Android.Runtime.DynamicMethodNameCounter.40(intptr,intptr)处

为了能够使用异步构造函数,我以位置作为参数制作了一个:

public MainPage(Plugin.Geolocator.Abstractions.Position position)
{
    ...
}

然后我添加了此方法以获取位置:

public static async Task<MainPage> CreateMainPageAsync()
{
    var locator = CrossGeolocator.Current;
    locator.DesiredAccuracy = 50;
    var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10));
    MainPage page = new MainPage(position);
    return page;
}

在app.xaml.cs文件中,我将此代码添加到了OnStart()方法中:

protected override async void OnStart()
{
    interface_test.MainPage main = await interface_test.MainPage.CreateMainPageAsync();
    MainPage = main;
}

PS:在更新某些组件,Xamarin和某些软件包之前,我开始出现此错误。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,实际上,这听起来可能很愚蠢,但是我只是忘记了在手机上打开GPS。就是这样。