Google Maps v3 геокодирование на стороне сервера - PullRequest
11 голосов
/ 30 октября 2011

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

Ответы [ 3 ]

16 голосов
/ 30 октября 2011

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

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 голосов
/ 18 сентября 2015

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

 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;
    }
0 голосов
/ 28 августа 2018

Я столкнулся с проблемами из-за нового требования API Google для использования действительного ключа API. Чтобы все заработало, я изменил код, добавив ключ к адресу и изменив URL на https:

public Dictionary<string, decimal> GoogleGeoCode(string address)
{
    var latLong = new Dictionary<string, decimal>();
    string addressReqeust = address + "&key=your api key here";
    const string url = "https://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=";

    dynamic googleResults = new Uri(url + addressReqeust).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;
        try
        {
            latLong.Add("Lat", lat);
            latLong.Add("Lng", lng);
        }
        catch (Exception ex)
        {

        }
    }

    return latLong;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...