Google Map - Reverse-Geocoder
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:
1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: using System.Web;
5: using System.Net;
6: using System.Web.UI;
7:
8:
9: namespace GoogleGeocoder
10: {
11: public interface ISpatialCoordinate
12: {
13: decimal Latitude {get; set; }
14: decimal Longitude {get; set; }
15: }
16:
17: /// <summary>
18: /// Estrutura da Coordenada
19: /// </summary>
20: public struct Coordinate : ISpatialCoordinate
21: {
22: private decimal _latitude;
23: private decimal _longitude;
24:
25: public Coordinate(decimal latitude, decimal longitude)
26: {
27: _latitude = latitude;
28: _longitude = longitude;
29: }
30:
31: #region ISpatialCoordinate Members
32:
33: public decimal Latitude
34: {
35: get
36: {
37: return _latitude;
38: }
39: set
40: {
41: this._latitude = value;
42: }
43: }
44:
45: public decimal Longitude
46: {
47: get
48: {
49: return _longitude;
50: }
51: set
52: {
53: this._longitude = value;
54: }
55: }
56:
57: #endregion
58: }
59:
60: public class Geocode
61: {
62: private const string _googleUri = "http://maps.google.com/maps/geo?q=";
63: private const string _googleKey = "yourkey";
// Opções de exportação: csv, xml, kml, json
64: private const string _outputType = "csv";
65:
66: private static Uri GetGeocodeUri(string address)
67: {
68: address = HttpUtility.UrlEncode(address);
69: return new Uri(String.Format("{0}{1}&output={2}&key={3}",
_googleUri, address, _outputType, _googleKey));
70: }
71:
72: /// <summary>
73: /// Metodo para Pegar a Coordenada de um endereço
74: /// </summary>
75: /// <param name="address">Endereço
76: /// <remarks>
77: /// <example>Rua Libero Badaró , SP</example>
78: /// </remarks>
79: /// </param>
80: /// <returns>Latitude e longitude do endereço.</returns>
81: public static Coordinate GetCoordinates(string address)
82: {
83: WebClient client = new WebClient();
84: Uri uri = GetGeocodeUri(address);
85:
86:
87: string[] geocodeInfo = client.DownloadString(uri).Split(',');
88:
89: return new Coordinate(Convert.ToDecimal(geocodeInfo[2]),
Convert.ToDecimal(geocodeInfo[3]));
90: }
91:
92: }
93: }
94:
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
Eu também falei deste e de outros assuntos no meu blog -> http://nelsonborgesjr.spaces.live.com/blog/
[]´s
2 Responses to “Google Map - Reverse-Geocoder”
Leave a Reply

Rhyhozy on maio 24th, 2009
Hi, nice posts there :-) thank’s for the interesting dirt
Web Service on maio 26th, 2009
I checked the tile cache for similar navigation using the Google GMap2 object and get about 600 tiles. Web Service