0

我已经在我的应用程序中使用此代码一段时间来获取某些地址的纬度和经度:

private string geoCode(string query)
    {
        WebRequest request = WebRequest.Create("http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address="
                 + HttpUtility.UrlEncode(query));

        using (WebResponse response = request.GetResponse())
        {
            using (Stream stream = response.GetResponseStream())
            {
                XDocument document = XDocument.Load(new StreamReader(stream));

                XElement longitudeElement = document.Descendants("lng").FirstOrDefault();
                XElement latitudeElement = document.Descendants("lat").FirstOrDefault();

                if (longitudeElement != null && latitudeElement != null)
                {
                    return latitudeElement.Value.ToString() + ", " + longitudeElement.Value.ToString();
                }
            }
        }

        return null;
    }

它一直工作到现在。现在,当我启动程序时它不返回任何内容,我尝试了多个不同的查询,结果仍然返回 null。

变量查询包含我在 Windows 窗体 c# 文本框中编写的地址。我按下按钮,这段代码就会执行。有人知道为什么它不再工作了吗?

4

1 回答 1

0

有几件事可以帮助您缩小问题范围

  1. 从您的文本框中获取 api 地址和位置。直接把url粘贴到chrome里看看有没有结果

    http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=address_you_are_trying

我尝试了几个地址,我得到了回复。

  1. 如果到此为止一切正常,请找出您的 c# 代码。可能是您没有解析正确的 xml 元素。如果您不想解析 xml,您可以将 xml 参数更改为 JSON 并转换为 JSON 对象以更轻松地获取属性,如下所示

    http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Ealing

于 2013-08-23T14:11:14.243 回答