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