Подтвердить что ты не робот

Геокодирование Google Maps v3 на стороне сервера

Я использую ASP.NET MVC 3 и Google Maps v3. Я хотел бы сделать геокодирование в действии. Это передает действительный адрес в Google и возвращает широту и долготу. Все онлайн-образцы по геокодированию, которые я видел, касались геокодирования на стороне клиента. Как вы это сделаете в действии с помощью С#?

4b9b3361

Ответ 1

Я не уверен, правильно ли я вас понимаю, но так я это делаю (если вам интересно)

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

используя методы расширения здесь и Json.Net

Ответ 2

Решение L.B работало для меня. Однако я столкнулся с некоторыми проблемами привязки во время выполнения и должен был опубликовать результаты, прежде чем я смог их использовать.

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