连续跟踪位置 windows phone 8

Posted

技术标签:

【中文标题】连续跟踪位置 windows phone 8【英文标题】:Tracking location continuously windows phone 8 【发布时间】:2014-10-07 01:22:30 【问题描述】:

我正在开发基于 GPS 服务的应用程序,我必须持续跟踪用户的位置,例如 HERE 地图。

geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.High;
geolocator.MovementThreshold = 20; //Doesn't matter the value I put here, it won't work
geolocator.PositionChanged += geolocator_PositionChanged;

void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)

    Dispatcher.BeginInvoke(() =>
    
        if(args.Position != null)
        
             myPosition = args.Position.Coordinate.ToGeoCoordinate();
             UpDateData();
        
     );

(我已尝试使用 GeoCoordinateWatcher,但我一无所获)。 当我站在同一个地方或非常缓慢地移动时,这些功能可以完美运行,但如果我进入汽车并开始驾驶应用程序在几秒钟后崩溃,我不知道为什么。 我已经搜索了很多具有相同最终性的代码,但它们都不起作用。 您是否知道该问题的任何其他解决方案或已经发现自己处于与我相同的位置?

【问题讨论】:

您遇到什么异常?您可以使用一些崩溃报告工具来获取日志,以便更容易将您的问题归零。 尝试将geolocator.ReportInterval 设置为像 20000(20 秒)这样的高值。让我知道结果。 我发现了一个 System.Reflection.TargetInvocationException 【参考方案1】:
try
    
        geolocator = new Geolocator();
        geolocator.DesiredAccuracy = PositionAccuracy.High;
        geolocator.ReportInterval = 2000;
        geolocator.PositionChanged += geolocator_PositionChanged;
    
    catch (UnauthorizedAccessException)
    
        MessageBox.Show("Location  is Disabled in Phone Settings.");
    

    private void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
    
    try
    
        Dispatcher.BeginInvoke(() =>
        
            if (args.Position != null && args.Position.Coordinate.ToGeoCoordinate() != myPosition)
            
                if(args.Position.Coordinate.Accuracy <= 1500)
                
                    myPosition = args.Position.Coordinate.ToGeoCoordinate();
                    UpDateMyPositionCircle(args.Position.Coordinate.Accuracy);
                
            
        );
     
    catch (TargetInvocationException tie) 
    
        if (tie.Data == null) throw;
        else MessageBox.Show("TargetInvocationException while Tracking: " + tie.InnerException.ToString());                    
    
    catch(SystemException se)
    
        if (se.Data == null) throw;
        else MessageBox.Show("SystemException while Tracking: " + se.InnerException.ToString());
    
    catch(Exception ex)
    
        if (ex.Data == null) throw;
        else MessageBox.Show("Exception while Tracking: " + ex.InnerException.ToString());
    

【讨论】:

以上是关于连续跟踪位置 windows phone 8的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows phone 8.1 中实时跟踪位置

适用于 Windows Phone 的 Google Analytics UTM 跟踪

windows phone 7 如何导航到设置菜单

无法连续两次从列表框中选择相同的项目 - windows phone 8 C#

如何使用开始和停止 UIButtons 连续跟踪位置坐标并查找距离 [关闭]

Windows Phone 位置 API