Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#/ WP7] géolocalisation

Sujet résolu
    20 juin 2012 à 23:14:17

    Bonjour à tous,
    Je viens de de commencer le développement sur Windows phone et j'aimerai créer une application de géolocalisation d'utilisateur, par exemple.
    Pour ce faire j'ai donc fait appel au webservice de Bing , geocode, qui prend un paramètre une adresse et la retourne sous forme de coordonnées que j'affiche dans une map si la distance entre celle ci et ma position est inférieure à une distance définie précédemment.

    Je voudrais afficher chaque utilisateur dans ,dont la distance est inférieure à celle demandée dans une listbox.
    Pour ce faire j'ai créé la fonction geolocation qui prend en paramètre une liste d'utilisateurs.
    private void geoLocation(List<Users> foundUsers)
            {
                foreach (Users user in foundUsers)
                {
                    GeocodeRequest geocodeRequest = new GeocodeRequest();
                    geocodeRequest.Credentials = new Credentials();
                    geocodeRequest.Credentials.ApplicationId = "*******************************";
                    GeocodeServiceClient geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
                    geocodeService.GeocodeCompleted += new EventHandler<GeocodeCompletedEventArgs>(geocodeService_GeocodeCompleted);
                    geocodeRequest.Query = user.adresseRue + " " + useradresseVille;
                    if (geocodeRequest.Query != "")
                    {
                        currentUser = user;
                        geocodeService.GeocodeAsync(geocodeRequest);
                    }
                }          
            }
            void geocodeService_GeocodeCompleted(object sender, GeocodeCompletedEventArgs e)
            {
                    geocodeResponse = e.Result;
                    if (geocodeResponse.Results.Count > 0)
                    {
                        if (geocodeDistance(geoWatcher.Position.Location.Latitude, geoWatcher.Position.Location.Longitude,
                                   geocodeResponse.Results[0].Locations[0].Latitude, geocodeResponse.Results[0].Locations[0].Longitude)
                                   < distance)
                        {
                            AddPinOnMap(geocodeResponse.Results[0].Locations[0].Latitude, geocodeResponse.Results[0].Locations[0].Longitude,label.ToString());
                            label++;
                            goodUsers.Add(currentUser);
                        }
                    }
                    else
                        MessageBox.Show("An exception occurred: ");
                listBoxResults.ItemsSource = goodUsers;
            }
    

    Le problème est que comme c'est un processus asynchrone les utilisateurs présents dans la listeBox de Resultats sont tous les mêmes , soit le dernier User assigné dans le foreach.
    Après des heures de recherche je n'ai toujours pas trouvé de solutions pour récupérer des utilisateurs dans ma listBox.
    Auriez vous des pistes à me suggérer.
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter

    [C#/ WP7] géolocalisation

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown