Я использую ASP.NET MVC 3 и Google Maps v3. Я хотел бы сделать геокодирование в действии. Это передает действительный адрес в Google и возвращает широту и долготу. Все онлайн-образцы по геокодированию, которые я видел, касались геокодирования на стороне клиента. Как вы это сделаете в действии с помощью С#?
Геокодирование Google Maps v3 на стороне сервера
Ответ 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);
}
}
Ответ 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;
}