Google Map - Reverse-Geocoder
Olá hoje irei falar de um recurso bem interessante, trata-se do Reverse-Geocoder, como o próprio nome diz ele possui a função reversa do Geocoder, ou seja você pode pegar um valor latitude e longitude de um endereço através de um point selecionado no mapa (image).
Alguma vez, você já deve ter utilizado o serviço do Google Map como usuário, serviço tão útil que o Google disponibiliza algumas bibliotecas para integrar o Google Map em suas aplicações .NET, até aqui nada de novidade, e até na web existem vários artigos e exemplos de como consumir estas bibliotecas ou serviço do Google:
Veja alguns exemplos:
Google Maps Control for ASP.Net - Part I
http://www.c-sharpcorner.com/UploadFile/shabdarghata/google-maps-user-control-for-ASP-Net-part103232008234414PM/google-maps-user-control-for-ASP-Net-part1.aspx
Lat Lays Flat - Part 1 : A Google Maps .NET Control
http://www.codeproject.com/KB/custom-controls/LatLaysFlat-Part1.aspx
Os exemplos acima mostram uma aplicação web utilizando o Google map da seguinte forma: você passa o endereço para o serviço e ele redireciona você a imagem de referência no mapa, em que momento isso é útil, quando você quer visualizar o mapa de um endereço especifico. Bom mas como tem necessidades de deixar as coisas mais complexas, imagine a seguinte situação.
- Você precisa disponibilizar um mapa no site, o usuário escolhe (clica) em um ponto do mapa, e você captura o endereço (latitude e longitude) do ponto no gráfico selecionado. Como fazer isso ?
Simples, o Google também possui um serviço chamado reverse-geocoder, e este serviço simplesmente resolve o problema acima, ou seja você gera o mapa e consegue pegar latitude e longitude do ponto selecionado.
A url do service é: "http://maps.google.com/maps/geo?q="; e para implementar no seu código é simples, veja um exemplo de uma classe consumindo este serviço:
| using System;
using System.Collections.Generic; using System.Text; using System.Web; using System.Net; using System.Web.UI;
namespace GoogleGeocoder { public interface ISpatialCoordinate { decimal Latitude {get; set; } decimal Longitude {get; set; } }
/// /// Estrutura da Coordenada /// public struct Coordinate : ISpatialCoordinate { private decimal _latitude; private decimal _longitude;
public Coordinate(decimal latitude, decimal longitude) { _latitude = latitude; _longitude = longitude; }
#region ISpatialCoordinate Members
public decimal Latitude { get { return _latitude; } set { this._latitude = value; } }
public decimal Longitude { get { return _longitude; } set { this._longitude = value; } }
#endregion }
public class Geocode { private const string _googleUri = "http://maps.google.com/maps/geo?q="; private const string _googleKey = "yourkey"; private const string _outputType = "csv"; // Opções de exportação: csv, xml, kml, json
private static Uri GetGeocodeUri(string address) { address = HttpUtility.UrlEncode(address); return new Uri(String.Format("{0}{1}&output={2}&key={3}", _googleUri, address, _outputType, _googleKey)); }
/// /// Metodo para Pegar a Coordenada de um endereço /// /// Endereço /// /// Rua Libero Badaró , SP /// /// /// Latitude e longitude do endereço. public static Coordinate GetCoordinates(string address) { WebClient client = new WebClient(); Uri uri = GetGeocodeUri(address);
string[] geocodeInfo = client.DownloadString(uri).Split(',');
return new Coordinate(Convert.ToDecimal(geocodeInfo[2]), Convert.ToDecimal(geocodeInfo[3])); }
} }
|
Mais exemplos sobre :
Reverse Geocoding Webservice
http://www.geonames.org/maps/reverse-geocoder.html
GeoNames .NET WCF Client
http://www.codeproject.com/KB/WCF/GeoNames-WCFClient.aspx
[]´s

Blog Pessoal..Clique para acessar
Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

3
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!