Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

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

 
Eu também falei deste e de outros assuntos no meu blog -> http://nelsonborgesjr.spaces.live.com/blog/

[]´s




    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


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

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03