2011-09-19 2 views
2

Je suis en train d'appeler google maps géocodage et suis suivant l'exemple sur leur page web pour essayer de l'appliquer à la mienneComment lire la valeur xml retour de google maps

http://code.google.com/apis/maps/documentation/geocoding/index.html

dans cet exemple, l'API de géocodage demande une réponse xml pour la requête identique indiquée ci-dessus pour "1600 Amphitheater Parkway, Mountain View, CA": http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false Le code XML renvoyé par cette requête est indiqué ci-dessous.

Maintenant, je suis en train de lancer cette URL comme ça dans mon C# winforms l'application

string url = "http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false"; 
    WebRequest req = HttpWebRequest.Create(url); 
    WebResponse res = req.GetResponse(); 
    StreamReader sr = new StreamReader(res.GetResponseStream()); 
    try 
    { 
     Match coord = Regex.Match(sr.ReadToEnd(), "<coordinates>.*</coordinates>"); 
     var b = coord.Value.Substring(13, coord.Length - 27); 
    } 
    finally 
    { 
     sr.Close(); 
    } 

Cependant il ne semble pas être quelque chose de retour et en tant que telle ma ligne var b donne un indice sur une erreur de limites . Quelqu'un peut-il me diriger dans la bonne direction pour au moins obtenir l'exemple de travailler afin que je puisse appliquer la logique à ma propre application?

Merci

Répondre

3

Si vous visitez votre lien « http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false » directement dans un navigateur, vous pouvez voir ce qu'il est de retour. Il me donne une erreur de demande refusée.

Le problème est dû au paramètre sensor = true_or_false. Vous devez choisir si vous voulez que ce soit vrai ou faux. Google l'a dit de cette façon dans son exemple, de sorte que vous devez décider explicitement pour vous-même. Ce paramètre indique si votre application utilise un capteur de position ou non. Dans votre cas, je ne pense pas, alors mettez-le à false.

Si vous modifiez le lien que vous utilisez à http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=false, je pense que vous obtiendrez les résultats que vous attendiez.

+2

+1 Résolu en LECTURE DE LA DOCUMENTATION – Alain

+0

Je pense avoir manqué le paramètre du capteur la première fois que j'ai essayé l'API. –

+0

bon sens - je manque clairement. Désolé - vous êtes tellement embourbé dans le code en tant que débutant que vous oubliez de prendre du recul et de regarder ce qui est devant vous - merci – simon