C# 让地理定位器忘记自己的历史

C# 让地理定位器忘记自己的历史,c#,windows-phone-8,windows-phone,location,mapping,C#,Windows Phone 8,Windows Phone,Location,Mapping,我正试图对当前位置进行一些非常详细的测量。我希望看到我的方法的两次调用中输出的坐标之间最细微的差别——英寸。然而,当我点击“再次读取”按钮,然后吐出相同的坐标时,地理定位器似乎记得它的最后一次测量。为了证实这一点,我尝试了两个测试: 在测试A中,我一边走路一边又一次发垃圾邮件。输出相同的测量值 在测试B中,我关闭了位置服务并重新打开它。然后,我做了一个测量。我改变了立场。然后,我把它关掉,再打开,再做一次测量。地点改变了 这是我当前的地理定位器代码。(它是异步的,每次点击按钮时都会调用)我的目标

我正试图对当前位置进行一些非常详细的测量。我希望看到我的方法的两次调用中输出的坐标之间最细微的差别——英寸。然而,当我点击“再次读取”按钮,然后吐出相同的坐标时,地理定位器似乎记得它的最后一次测量。为了证实这一点,我尝试了两个测试:

在测试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();
    }
async void Tick(对象发送方,事件参数e)
{
Geolocator Geolocator=新的Geolocator();
geolocator.DesiredAccuracy=定位精度。高;
IAsyncOperation locationTask=null;
尝试
{
if(geologitor.LocationStatus==PositionStatus.Disabled)
Show(“无法确定信息,因为位置服务已关闭。”);
其他的
{
locationTask=geolocator.GetGeoPositionSync(TimeSpan.FromMinutes(1),TimeSpan.FromSeconds(15));
地理位置地理位置=等待定位任务;
distance.Children.Add(new TextBlock(){Text=geopposition.Coordinate.Latitude.ToString()+”,“+geopposition.Coordinate.Longitude.ToString()});
updnum=updnum+1;
//Numupd.Text=updnum.ToString();
}
}
最后
{
if(locationTask!=null)
{
if(locationTask.Status==AsyncStatus.Started)
{
locationTask.Cancel();
}
locationTask.Close();
}
}
//locationTask.Cancel();
回来
//locationTask.Close();
}

尝试订阅已更改的
位置
并设置
报告间隔
移动阈值
,以及
所需的准确度仪表
,然后查看事件是否在您的设备上触发。在我的设备上,它不是那么准确,它会从最后一个位置每隔一米左右发射一次。