none
Comment utiliser Bing Maps services pour exécuter des queries ailleurs qu'aux US RRS feed

  • Question

  • Bonjour,

    Dans mon app Windows Phone 7.5 je souhaite utiliser les services Bing Maps pour permettre à l'utilisateur d'indiquer un lieu (par le nom et l'adresse ou en pointant sur le controle BingMaps pour Silverlight).

    Lorsque j'utilise le SearchServiceClient (

    "SearchServiceClientmySearchService = newSearchServiceClient("BasicHttpBinding_ISearchService");

    et une StructuredQuery, seuls des recherches sur les US procurent des résultats. Le parametre

    searchRequest.Culture = "fr-FR" n'ychange rien.

    Ci dessous le code pour préparer la query :

      SearchServiceClient mySearchService = new SearchServiceClient("BasicHttpBinding_ISearchService");
                mySearchService.SearchCompleted += new EventHandler<SearchCompletedEventArgs>(mySearchService_SearchCompleted);
    
                SearchRequest searchRequest = new SearchRequest();
                            searchRequest.Credentials = new Credentials();
                searchRequest.Credentials.ApplicationId = "xxxxx...................xxxxxx"
                ////Create the search query
                StructuredSearchQuery ssQuery = new StructuredSearchQuery();
                
                ssQuery.Keyword = TextBoxWhat.Text;
                ssQuery.Location = TextBoxWhere.Text;
                searchRequest.Culture = "fr-FR";
                searchRequest.StructuredQuery = ssQuery;
                
                
                
                            ////Make the search request 
              
                mySearchService.InnerChannel.OperationTimeout = TimeSpan.FromMinutes(5);
                mySearchService.SearchAsync(searchRequest);
    Ci-dessous le code de test récupération du 1er résultat de la query (asynchrone) :

    void  searchService_SearchCompleted(object sender, SearchCompletedEventArgs e)
            {
                try
                {
                    ProgressBarMap.IsEnabled = false;
                    ProgressBarMap.Visibility = Visibility.Collapsed;
    
                    MessageBox.Show("Résultat : " + e.Result.ToString());
                    if (e.Result.ResultSets[0].Results.Count()!=0)
                    {
                        MessageBox.Show("résultat 1 : " + e.Result.ResultSets[0].Results[0].Name);
    
                    }
                    else
                    {
                        MessageBox.Show("Pas de résultat, modifiez votre recherche ou le lieu.");
                    }
    
    
                                }
                catch (Exception ex)
                {
                    MessageBox.Show("Service non accessible dans un délai raisonnable. Vérifiez votre couverture réseau ou réessayez ultérieurement.\n\nErreur : \n" + ex.ToString());
                }
    
            }


    Any idea ?


    Laurent Termeau /



    mercredi 1 août 2012 14:34

Réponses

Toutes les réponses

  • Au hasard, je dirais que tes données de geolocalisation ne sont pas bien formaté en francais

    Essaie ca : 

    1. earchServiceClient searchClient = newSearchServiceClient("BasicHttpBinding_ISearchService");
    2.            
    3.             SearchRequest sq = new SearchRequest();
    4.             sq.Culture = "fr-FR";
    5.             sq.Credentials = new Credentials();
    6.             sq.Credentials.ApplicationId = "*******";
    7.  
    8.             sq.Query = "rue jean bart Lille France";
    9.  
    10.             return searchClient.Search(sq);


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    • Proposé comme réponse Pascal Saille mercredi 8 août 2012 11:58
    lundi 6 août 2012 09:16
    Modérateur
  • Bonjour Rudy,

    merci de l'info que je viens d'essayer. Malheureusement, je pense que le service je je tente d'utiliser : http://dev.virtualearth.net/webservices/v1/searchservice/searchservice.svc?wsdl ne présente que les infos US.

    J'ai fouillé un peu partout et j'en arrive à la conclusion que les services Bing Search ont été migrés en mars dernier vers "Azure Damamarket" (Bing Search API et Bing Search Api-Web Result Only) que j'ai aussi tenté d'utiliser en me créant un compte et tout le toutim pour accéder au service sur https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1 mais je rencontre un nouveau pb : lorsque je tente d'ajouter cette référence de Service, j'obtiens dans VStudio 2010 l'erreur "The Custom Tool "DataServiceClientGenerator" failed : Echec de la génération du Code du client  du Service de données : Object Reference not Set to an Instance  of an Object" ... ! et là, mes compétences s'arrêtent...

    J'ai là aussi fouillé sur les forum pour identifier des erreures similaires, mais en vain ... je suis un peu scotché !

    En fait, ce que j'essaie de faire dans mon application, c'est un peu la même chose que ce qui est intégré en standard dans Windows Phone lorsqu'on fait une recherche avec le bouton search qui présente les résultats sous la forme d'un pivot avec les résultats Web, Local, Images ... Je n'ai besoin que des résultats "Local".

    Par exemple un utilisateur de mon appli pourra rechercher un magazin avec une recherche "Suzuki Moto Paris" et obtiendra la liste des concessionnaires Suzuki Moto dans Paris. Il en choisira un et j'enregistrerai dans la base SQL Locale les coordonnées (GeoCoordinate) de ce magasin.

    Peut-être aurais-tu une autre suggestion pour réaliser ça ?

    Thanks so much,

    Laurent.


    Laurent Termeau /

    lundi 6 août 2012 13:27
  • Tu peux utiliser le webservice de nokia pour le geocode :

    http://api.maps.nokia.com/2.1.1/playground/?example=search

    ou le service de bing map 

    http://msdn.microsoft.com/en-us/library/cc966817.aspx


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue


    lundi 6 août 2012 16:34
    Modérateur
  • Bonjour Rudy,
    Merci beaucoup pour ces deux tuyaux. Je suis parvenu, grace à un excellent exemple, à utiliser de manière combinée le service de Géocodage de Bing et le service de Search "places" de Nokia.
    Perfect.
    J'ai packagé un petit exemple si ça intéresse quelqu'un, téléchargeable ici : http://sdrv.ms/MLMoR5 (lien skydrive public)

    Thanks so much !


    Laurent Termeau /

    • Proposé comme réponse Pascal Saille mercredi 8 août 2012 11:58
    • Non proposé comme réponse Pascal Saille mercredi 8 août 2012 11:58
    mardi 7 août 2012 22:15