Как читать возвращенное значение xml с карт Google

Я пытаюсь вызвать геокодирование карт Google, и я следую примеру на их веб-странице, чтобы попытаться применить его к моей

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

в этом примере API геокодирования запрашивает ответ в формате XML для указанного выше запроса для "1600 Amphitheatre Parkway, Mountain View, CA": http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false XML, возвращаемый этим запросом, показан ниже.

Теперь я пытаюсь запустить этот URL-адрес в моем приложении winforms С #

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

Однако он, похоже, ничего не возвращает, и поэтому моя строка var b дает ошибку индекса за пределами границ. Может ли кто-нибудь указать мне в правильном направлении, чтобы хотя бы пример заработал, чтобы я мог применить логику к своему собственному приложению?

Спасибо


person simon    schedule 19.09.2011    source источник


Ответы (1)


Если вы перейдете по ссылке "http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=true_or_false" прямо в браузере вы можете увидеть что он возвращается. Это дает мне ошибку REQUEST DENIED.

Проблема вызвана параметром sensor = true_or_false. Вы должны выбрать, хотите ли вы, чтобы это было правдой или ложью. Google представил это в своем примере, так что вы должны явно решить для себя. Этот параметр указывает, использует ли ваше приложение датчик местоположения или нет. В вашем случае я предполагаю, что нет, поэтому установите значение false.

Если вы измените используемую ссылку на http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=false, я думаю, вы Получу результаты, которых вы ожидали.

person Joel Beckham    schedule 19.09.2011
comment
Я думаю, что пропустил параметр датчика, когда впервые попробовал API. - person Joel Beckham; 19.09.2011
comment
здравого смысла - мне явно не хватает. Извините - вы так увязли в коде, как новичок, что забываете сделать шаг назад и посмотреть, что находится прямо перед вами - спасибо - person simon; 19.09.2011