我的问题是在我的本地网络服务器上运行以下功能,所有传递的地址都由纬度和经度解决。当我在主机上发布时,大多数这些地址都返回一个空字符串。 地址参数的格式如此:" 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;
}
答案 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)
我尝试了另一种方法,但服务器上的问题仍然存在三重反序列化属性。 捕获的错误是:"索引超出了数组的范围。" 在当地,每个人都可以......