让geolocator忘记自己的历史

时间:2014-12-18 00:06:03

标签: c# windows-phone-8 windows-phone location mapping

我试图对当前位置进行一些非常详细的测量。我希望在我的方法的两次调用中看到输出坐标之间最微妙的差异 - 英寸。然而,地理定位器似乎记得它的最后一次测量,当我击中" 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();
    }

0 个答案:

没有答案