2011-10-29 2 views
11

ASP.NET MVC 3 및 ​​Google Maps v3을 사용하고 있습니다. 액션에서 지오 코딩을하고 싶습니다. 그것은 유효한 주소를 Google에 전달하고 위도와 경도를 되 돌리는 것입니다. 필자가 본 지오 코딩의 모든 온라인 샘플은 클라이언트 측 지오 코딩을 처리했습니다. 어떻게하면 C#을 사용하여 작업에서이 작업을 수행할까요?Google Maps v3 지오 코딩 서버 측

답변

16

내가 제대로 이해 확실하지 오전하지만이 here & Json.Net

+0

니스 덕분에 공유에 감사드립니다. 그것은 잘 작동합니다. 샘플에서 Google지도 버전 3을 올바르게 사용하고 있습니까? – thd

+0

아니요, javascript API가 아닙니다. http://code.google.com/apis/maps/documentation/geocoding/ ('JSON 출력 형식 ') –

+0

에서 문서를 사용했습니다. lat와 lng를 데이터베이스 테이블에 저장하려고 계획했다면 여전히 작동할까요? – RyeNyeTheComputerScienceGuy

2

LB의 솔루션은 근무 확장 방법을 사용하여 (당신이 관심이 있다면) 내가 그것을 할 방법

void GoogleGeoCode(string address) 
{ 
    string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address="; 

    dynamic googleResults = new Uri(url + address).GetDynamicJsonObject(); 
    foreach (var result in googleResults.results) 
    { 
     Console.WriteLine("[" + result.geometry.location.lat + "," + result.geometry.location.lng + "] " + result.formatted_address); 
    } 
} 

입니다 나를 위해. 그러나 런타임 바인딩 문제가 발생하여이를 사용하기 전에 결과를 캐스팅해야했습니다.

public static Dictionary<string, decimal> GoogleGeoCode(string address) 
    { 
     var latLong = new Dictionary<string, decimal>(); 

     const string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address="; 

     dynamic googleResults = new Uri(url + address).GetDynamicJsonObject(); 

     foreach (var result in googleResults.results) 
     { 
      //Have to do a specific cast or we'll get a C# runtime binding exception 
      var lat = (decimal)result.geometry.location.lat; 
      var lng = (decimal) result.geometry.location.lng; 

      latLong.Add("Lat", lat); 
      latLong.Add("Lng", lng); 
     } 

     return latLong; 
    } 
관련 문제