Rastreamento de local do Windows Phone 8.1

Quero realizar um aplicativo que envie continuamente a posição do dispositivo para um serviço da web. Procurando na documentação, encontrei a classe Geolocation e alguns artigos nos quais o rastreamento de posição é discutido:

Como rastrear continuamente a localização do telefone no Windows Phone 8Como executar aplicativos de rastreamento de localização em segundo plano no Windows Phone 8

Implementando os dois exemplos de projetos discutidos nesses artigos, notei que o evento geolocator_PositionChanged () não é acionado a cada atualização de posição. Há um atraso (cerca de 10/15 minutos) entre duas execuções do evento. O estranho é que isso acontece mesmo quando o aplicativo é executado em primeiro plano (não apenas em segundo plano). Estou usando o emulador do Windows Phone.

No meu aplicativo, tenho um controle de mapa onde preciso mostrar a posição do usuário e, portanto, preciso que o evento geolocator_PositionChanged () seja acionado corretamente para cada atualização de posição, sem atrasos.

1) Como rastrear (sem atrasos) a posição do dispositivo usando a classe Geolocator?

Pesquisando pela rede, encontrei a classe GeoCoordinateWatcher, que fornece rastreamento de posição continuamente do dispositivo. Este é o código:

public MainPage()
{
    InitializeComponent();
    this.GetCoordinate();
}

private void GetCoordinate()
{
    var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
    {
        MovementThreshold = 1
    };
    watcher.PositionChanged += this.watcher_PositionChanged;
    watcher.Start();
}

private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    //Get position data
    var pos = e.Position.Location;
    //Update mypos object
    mypos.update(pos.Latitude, pos.Longitude);
    //Update data on the main interface
    MainMap.SetView(mypos.getCoordinate(), MainMap.ZoomLevel, MapAnimationKind.Parabolic);
}

Funciona: o evento watcher_PositionChanged () é disparado sem atrasos.

2) Por que o GeoCoordinateWatcher não possui atrasos? Qual é a diferença entre a classe GeoCoordinateWatcher e a classe Geolocator?

Por fim, o aplicativo deve enviar a posição do dispositivo ao serviço da web, mesmo quando não estiver ativo. Então, eu preciso de uma tarefa em segundo plano. Como propostoaqui por Romasz, posso usar a classe Geolocator com algumas limitações.

3) Posso usar o GeoCoordinateWhatcher em segundo plano? Se sim, como?

Meu objetivo é criar um aplicativo de rastreamento de posição sem atrasos, que até funcione em segundo plano. Qual é a melhor maneira de fazer isso? O aplicativo deve rastrear a posição do dispositivo e atualizar continuamente o serviço da web (mesmo quando em segundo plano). Como posso fazer isso? Qual é a melhor abordagem? Conheço o ciclo de vida do Windows Phone Apps e posso aceitar algumas limitações para a execução em segundo plano. Quais são os limites de segundo plano?

questionAnswers(3)

yourAnswerToTheQuestion