2

我的問題是,在我的本地web服務器上運行下面的函數時,所有通過的地址都通過緯度和經度來解析。當我在主機上發佈時,大多數這些地址返回一個空字符串。 地址參數使格式化:「主街550,倫敦」使用google api獲取給定地址的經度和緯度問題

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

這個代碼可以返回的任何數量的原因,一個空字符串。有一個'status'節點作爲響應的一部分。這沒有被檢查。可能沒有任何「位置」節點。文檔'Load'可能會引發異常。在不知道任何這些信息的情況下,不能給出有用的答案。 –

+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; 
} 

而且瀏覽到來自本地機器上的Google地圖網址和服務器,並檢查是否返回相同的XML內容?服務器也可能沒有互聯網連接。

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

我做到了,結果是一樣的。在服務器上,我可以看到相同的本地xml(座標被加載,我無法在xml中檢索它)。 –

0

我試過這種方法,但服務器上的問題持續triyng反序列化屬性。 捕獲的錯誤是:「索引超出了數組的範圍。」 在每一個地方是好的...

enter image description here

相關問題