我试图对当前位置进行一些非常详细的测量。我希望在我的方法的两次调用中看到输出坐标之间最微妙的差异 - 英寸。然而,地理定位器似乎记得它的最后一次测量,当我击中" Read Again"按钮,然后只吐出相同的坐标。为了证实这一点,我尝试了两个测试:
在测试A中,当我走路时,我继续发送垃圾邮件。输出相同的测量值。
在测试B中,我关闭了位置服务并将其重新打开。然后,我做了一个测量。我改变了立场。然后,我将其关闭并再次打开并进行另一次测量。位置发生了变化。
这是我目前的地理定位器代码。 (每次按下按钮时都是异步并调用)我的目标是让它忘记最后一次测量,类似于关闭位置服务时发生的情况。
async void Tick(object sender, EventArgs e)
{
Geolocator geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.High;
IAsyncOperation<Geoposition> locationTask = null;
try
{
if (geolocator.LocationStatus == PositionStatus.Disabled)
MessageBox.Show("Cannot determine info because location services are turned off.");
else
{
locationTask = geolocator.GetGeopositionAsync(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(15));
Geoposition geoposition = await locationTask;
distances.Children.Add(new TextBlock(){Text = geoposition.Coordinate.Latitude.ToString() + "," + geoposition.Coordinate.Longitude.ToString()} );
updnum = updnum + 1;
//Numupd.Text = updnum.ToString();
}
}
finally
{
if (locationTask != null)
{
if (locationTask.Status == AsyncStatus.Started)
{
locationTask.Cancel();
}
locationTask.Close();
}
}
//locationTask.Cancel();
return;
//locationTask.Close();
}