【问题标题】:How to read returned xml value from google maps如何从谷歌地图读取返回的 xml 值
【发布时间】:2011-09-19 17:40:27
【问题描述】:

我正在尝试调用谷歌地图地理编码,并按照他们网页上的示例尝试将其应用于我的地图

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

在本例中,Geocoding API 为 上面显示的相同查询“1600 Amphitheatre Parkway, Mountain 加利福尼亚州查看”: 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 行给出了一个索引越界错误。谁能指出我正确的方向,至少让示例能够工作,这样我就可以将逻辑应用到我自己的应用程序中?

谢谢

【问题讨论】:

    标签: c# winforms google-maps google-maps-api-3 httpwebrequest


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想我在第一次尝试 API 时也错过了传感器参数。
    • 常识 - 我显然缺乏。抱歉 - 作为初学者,你在代码中陷入了如此深的泥潭,以至于忘记了退后一步,看看你面前的东西 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多