如何从谷歌地图读取返回的xml值



我正在尝试调用谷歌地图地理代码,并在他们的网页上的例子,试图将其应用到我的

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

在本例中,Geocoding API请求xml响应上面显示的相同查询"1600圆形剧场公园路,山看来,CA":http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false这个请求返回的XML如下所示:

现在我试着在我的c# winforms应用程序中像这样运行url

    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行给出了一个索引越界错误。谁能指出我在正确的方向,至少让例子工作,所以我可以应用逻辑到我自己的应用程序?

谢谢

如果您直接在浏览器中访问链接"http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false",您可以看到它返回的内容。它给我一个请求被拒绝的错误。

sensor=true_or_false参数引起的问题。你必须选择是真还是假。谷歌在他们的例子中是这样说的,所以你必须明确地自己决定。此设置指示应用程序是否使用位置传感器。在您的情况下,我猜不是,所以将其设置为false。

如果你把你正在使用的链接改为http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=false,我想你会得到你所期望的结果。

最新更新