2

제 문제는 내 로컬 웹 서버에서 아래의 함수를 실행하면 전달 된 모든 주소가 위도와 경도로 해결된다는 것입니다. 호스트에 게시 할 때 이러한 주소의 대부분은 빈 문자열을 반환합니다. 인수가 너무 포맷 주소 : "메인 스트리트 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' 노드가 있습니다. 그것은 확인되지 않습니다. 'location' 노드가 없을 수도 있습니다. 문서 'Load'가 예외를 던지고있을 수 있습니다. 그 정보를 알지 못하면 유용한 대답이 주어지지 않습니다. –

+0

상태가 "OK"가 아니고 결과가 없는지 확인하려고했습니다. 내가 이해할 수없는 것은 내가 좌표를 찾을 수있는 지역에 대한 이유입니다. 빠른 답변에 감사드립니다. –

답변

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 URL을 찾아 동일한 XML 콘텐츠가 반환되는지 확인하십시오. 서버에 인터넷 연결이 없을 수도 있습니다.

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

나는 그것을했다, 결과는 동일 하. 서버에서 나는 같은 xml의 로컬을 볼 수있다. (좌표가로드되어 xml로 가져올 수 없다.) –

0

이 다른 방법을 시도했지만 서버의 문제로 인해 triyng에서 속성을 deserialize 할 수 있습니다. catch 된 오류 : "인덱스가 배열 경계를 벗어났습니다." 모든 괜찮 지역에 ...

enter image description here

관련 문제