在 Windows phone 8.1 中实时跟踪位置

Posted

技术标签:

【中文标题】在 Windows phone 8.1 中实时跟踪位置【英文标题】:Tracking location in realtime in Windows phone 8.1 【发布时间】:2015-01-13 00:43:10 【问题描述】:

对不起,如果这是一个愚蠢的问题,我是 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;
        

提前致谢!

【问题讨论】:

【参考方案1】:

处理Geolocator.PositionChanged 事件,而不是运行计时器和轮询。这将在每次位置更改时触发,并且效率会显着提高。

您可以设置Geolocator.MovementThreshold 属性,使其仅在用户移动给定距离时触发,而在用户站在同一个地方时不执行任何操作。您选择的阈值可能取决于您的地图放大了多远。

【讨论】:

我同意这是更好的方法。 OP应该遵循这个。 @Rob Caplan - 感谢您提供更有效的方法。【参考方案2】:

我这样做的方法是放置一个 Timer,它以给定的时间间隔从服务器请求信息。

看看这个包含代码 sn-p 的答案:*** answer

【讨论】:

这是一种糟糕的做法!

以上是关于在 Windows phone 8.1 中实时跟踪位置的主要内容,如果未能解决你的问题,请参考以下文章

当 Windows (phone) 8.1 应用程序在前台时接收并处理通知参数

为啥重启我的设备后 Windows Phone 8.1 后台任务不起作用?

Windows Phone 8.1 上的 RadioButtons 绑定

Ninject 和 windows phone 8.1

使用 Windows RT 的客户端证书(windows 8.1/windows phone 8.1)

Windows Phone 8.1 中的 BackButtonPressed 问题?