Windows Phone 8.1 suivi de localisation

Je veux réaliser une Application qui ne cesse de envoyez l'appareil à un service web. La recherche dans la documentation, j'ai trouvé la Géolocalisation de classe et de certains articles où de suivi de position est abordé:

La mise en œuvre de deux projets d'exemples discutés dans ces articles, j'ai remarqué que le geolocator_PositionChanged() de l'événement n'est pas déclenché à chaque mise à jour de position. Il y a un délai (environ 10/15 minutes) entre 2 exécution de l'événement. La chose étrange est que cela se produit même lorsque l'Application s'exécute en arrière plan (pas seulement en arrière-plan). Je suis à l'aide d'émulateur Windows Phone.

Dans mon Application j'ai un contrôle de la carte où j'ai besoin de montrer la position de l'utilisateur et, donc, j'ai besoin que l'geolocator_PositionChanged() cas être correctement tiré pour chaque mise à jour de position, sans retards.

1) Comment puis-je suivre (sans retard) la position de l'appareil à l'aide de Geolocator classe?

De la recherche sur le réseau, j'ai trouvé le GeoCoordinateWatcher classe, qui fournit continuellement de suivi de position de l'appareil. C'est le code:

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);
}

Cela fonctionne: watcher_PositionChanged() l'événement est déclenché, sans retards.

2) Pourquoi le GeoCoordinateWatcher n'a pas de retards? Quelle est la différence entre GeoCoordinateWatcher classe et Geolocator classe?

Enfin, l'Application doit envoyer la position du dispositif pour le web service, même quand il n'est pas actif. Donc, j'ai besoin d'une tâche en arrière-plan. Comme l'a proposé ici par Romasz, je peux utiliser Geolocator classe avec certaines limitations.

3) puis-je utiliser GeoCoordinateWhatcher dans le fond? Si oui, comment?

Mon objectif est de réaliser un suivi de position Application sans retard, qui fonctionne même en arrière-plan. Quelle est la meilleure façon de le faire? L'Application doit suivre la position de l'appareil et mettre à jour en permanence le service web (même si dans le fond). Comment puis-je faire cela? Quelle est la meilleure approche? Je sais que sur les Applications Windows Phone cycle de vie et je peux accepter certaines limitations pour l'exécution en arrière-plan. Ce sont l'arrière-plan des limites?

OriginalL'auteur smn.tino | 2014-06-30