使用google api发出获取给定地址的纬度和经度的问题

时间:2014-04-16 15:05:50

标签: c# asp.net visual-studio-2010 google-maps google-maps-api-3

我的问题是在我的本地网络服务器上运行以下功能,所有传递的地址都由纬度和经度解决。当我在主机上发布时,大多数这些地址都返回一个空字符串。 地址参数的格式如此:" Main Street 550,London"

    public string GetLongitudeAndLatitude(string address, string sensor)
    {
        string urlAddress = "http://maps.googleapis.com/maps/api/geocode/xml?address=" + HttpUtility.UrlEncode(address) + "&sensor=" + sensor;
        string returnValue = "";
        try
        {
            XmlDocument objXmlDocument = new XmlDocument();
            objXmlDocument.Load(urlAddress);
            XmlNodeList objXmlNodeList = objXmlDocument.SelectNodes("/GeocodeResponse/result/geometry/location");
            foreach (XmlNode objXmlNode in objXmlNodeList)
            {
                // GET LONGITUDE 
                returnValue = objXmlNode.ChildNodes.Item(0).InnerText;

                // GET LATITUDE 
                returnValue += "," + objXmlNode.ChildNodes.Item(1).InnerText;
            }
        }
        catch
        {
            // Process an error action here if needed  
        }
        return returnValue;
    }

2 个答案:

答案 0 :(得分:1)

您正在重置每次迭代的returnValue。更改代码以返回所有返回的纬度和经度,以获得完整的收集和比较。

foreach (XmlNode objXmlNode in objXmlNodeList)
{
    // GET LONGITUDE 
    returnValue += "\r\n" + objXmlNode.ChildNodes.Item(0).InnerText;

    // GET LATITUDE 
    returnValue += "," + objXmlNode.ChildNodes.Item(1).InnerText;
}

还可以从本地计算机和服务器浏览到GoogleMaps网址,并检查是否返回了相同的XML内容?服务器也可能没有互联网连接。

http://maps.googleapis.com/maps/api/geocode/xml?address=Main%20Street%20550,%20London&sensor=false

答案 1 :(得分:0)

我尝试了另一种方法,但服务器上的问题仍然存在三重反序列化属性。 捕获的错误是:"索引超出了数组的范围。" 在当地,每个人都可以......

enter image description here