sexta-feira, 2 de agosto de 2013

Buscar cidade pelo IP

Oi pessoal : )

Hoje tive que, pelo IP, descobrir a cidade do usuário.

Estou fazendo este post para repassar minhas descobertas : )

Antes de mais nada, caso você queira saber o seu IP é só acessar: http://www.whatismyip.com/

FreeGeoIP


Resumindo (e correndo o risco de que você não termine de ler este post) o jeito mais simples é esse:

http://freegeoip.net/json/170.130.90.30

Esse serviço Rest é free e retorna em JSON a cidade e outras informações pelo IP. Você pode acessá-lo diretamente pelo browser ou via programação fazendo uma chamada Rest.

Essa busca é feita com base em um banco de dados gigante que é atualizado diariamente. Ele não é 100% preciso mas ajuda bastante!

Existe a possibilidade de que o retorno seja XML, CSV.

Mais detalhes e limitações em: http://freegeoip.net/

O freegeoip utiliza um banco de dados free da MaxMind

MaxMind


Você pode utilizar diretamente o serviço rest da MaxMinds, ela tem 2 modelos de serviço:

Free: Tem um número limitado de consultas e você tem que botar um link para o site da MaxMind no seu site
Pago: Mais precisão e garantia que o serviço estará no ar.. são 20 dólares para 50.000 consultas, tem outros planos também.

Mais detalhes e limitações em: http://www.maxmind.com/pt/geolocation_landing

API de GeoLocation do HTML5


Outra possibilidade é usar a API de GeoLocation do HTML5:

http://www.w3schools.com/html/html5_geolocation.asp

Aí você consegue pegar latitude e longitude aproximada da pessoa, e com isso pode buscar a cidade.

Existe uma diferença, talvez desvantagem, em fazer dessa forma é que o usuário terá que autorizar o sistema a utilizar sua localização. Aparecerá uma janela com a mensagem "Deseja compartilhar sua localização com este site?"

Enfim, a busca pela cidade por lat e lng pode ser feita de duas formas:

Serviço Google:
Procure por Geocodificação reversa (busca de endereços) em: https://developers.google.com/maps/documentation/geocoding/?hl=pt-br

Observação: a Google Geocoding API só pode ser usada junto com um mapa do Google; é proibido usar os resultados da geocodificação sem exibi-los em um mapa

Banco de dados próprio
É possível buscar em um banco de dados ou arquivo de cidades com suas respectivas latitudes e longitudes.. aí é só você fazer um algoritmo simples de aproximação.

Esse site tem uma lista das maiores cidades do Brasil com lat e lng: http://www.mapsofworld.com/lat_long/brazil-lat-long.html

Você também pode pegar essa lista direto do IBGE, procure no google por Cidades_do_Brasil_2008.rar que você via achar.

Direto pelo browser

Sem API, mas forma rápida e free:

https://pt.vpnmentor.com/ferramentas/ipinfo/

Abraaço!!!
Adriano Schmidt

PS: Agradeço ao Rafael dos Santos que fez esta pesquisa comigo!

Nenhum comentário:

Postar um comentário