在Windows Phone 8.1中实时跟踪位置

本文关键字:实时 跟踪 位置 Windows Phone | 更新日期: 2023-09-27 18:37:26

对不起,如果这是一个愚蠢的问题,我是Windows Phone 8.1开发的初学者。我正在使用MapControl在地图上显示我的当前位置,但是当我移动时,除非我单击按钮并重新初始化之前创建的图钉的位置,否则我的位置不会实时自动更新。有没有更好的方法可以发生这种情况,而无需用户每次想要查看其当前位置时都按下按钮。

private async Task setMyLocation() 
        {
            try
            {
                var gl = new Geolocator() { DesiredAccuracy = PositionAccuracy.High };
                Geoposition location = await gl.GetGeopositionAsync(TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5));
                var pin = new MapIcon()
                {
                    Location = location.Coordinate.Point,
                    Title = "You are here",
                    NormalizedAnchorPoint = new Point() { X = 0, Y = 0 },
                };
                myMapView.MapElements.Add(pin);
                await myMapView.TrySetViewAsync(location.Coordinate.Point, 20);
            }
            catch
            {
                myMapView.Center = new Geopoint(App.centerPin);
                myMapView.ZoomLevel = 20;
                Debug.WriteLine("GPS NOT FOUND");
            }
            App.centerPin = myMapView.Center.Position;
        }

提前感谢!

在Windows Phone 8.1中实时跟踪位置

与其运行计时器和轮询,不如处理 Geolocator.PositionChanged 事件。每次位置变化时都会触发此操作,并且效率会大大提高。

您可以设置 Geolocator.MovementThreshold 属性,以便该属性仅在用户移动给定距离时触发,而当用户站在同一位置时不执行任何操作。您选择的阈值可能取决于地图的放大程度。

我会做的方法是放置一个计时器,该计时器以给定的时间间隔从服务器请求信息。

看看这个包含代码片段的答案:堆栈溢出答案