Giter Site home page Giter Site logo

coordenadas-do-cep's Introduction

Coordenadas Do CEP

Coordenadas Do CEP é um pacote do NPM, que, com base em um CEP informado é possível conseguir as informações sobre o mesmo (bairro, logradouro, estado e etc) e ainda sua latitude e longitude (não é 100% preciso, e as vezes se utiliza de aproximação para conseguir as coordenadas do CEP desejado).

Além disso consegue calcular a distancia entre dois CEPs (leve em consideração que ele apenas calcula a distancia direta ("em linha reta") entre as coordenadas, ou seja, o calculo é feito de forma totalmente diferente de um GPS, no qual são considerados as estradas/ruas/avenidas).

API's utilizadas:

Instalação

Use o NPM para instalar o Coordenadas Do CEP.

npm install coordenadas-do-cep

Novidades na versão 1.2.0

Agora todas as funções do Coordenadas do CEP utilizam promises nativas do javascript (ES6/ES2015), ou seja, não utilizam nenhuma biblioteca de promises externa como o bluebird ou promisify.

Além disso, não é utilizado mais nenhum pacote como o is_html ou request, assim, deixando a instalação mais rápida, além de possuir uma performance um pouco melhor.

Agora também é possível calcular a distancia entre dois CEPs, a distancia entre dois endereços e a distancia entre duas coordenadas.

Utilização

Função 'getByCep'

Nesta função é passado um parâmetro, o CEP (por exemplo "12345-678" ou "123456789" são incorretos, sendo o formato correto "12345678"), e então é retornado uma promise contendo o erro ou as informações do CEP juntamente com suas coordenadas.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

(async () => {

   try{
      const info = await CepCoords.getByCep("06310390");
   } catch (err) {
      //o parâmetro 'err' possui o código do erro http
   }

})()


// OU

CepCoords.getByCep("06310390")
.then(info => {
   //retorna o mesmo 'info' da versão em promise
})
.catch(err => {
   //retorna o mesmo parâmetro 'err' da versão em promise
})

Parâmetro 'info':

{
  cep: '06310-390',
  logradouro: 'Avenida Francisco Pignatari',
  complemento: '',
  bairro: 'Vila Gustavo Correia',
  localidade: 'Carapicuíba',
  uf: 'SP',
  unidade: '',
  ibge: '3510609',
  gia: '2550',
  lat: -23.5235,
  lon: -46.8407
}

Erros possíveis (parâmetro 'err'):

  • 400
  • 404
  • 500

Função 'getInfoCep'

Nesta função é passado um parâmetro, o CEP (por exemplo "12345-678" ou "123456789" são incorretos, sendo o formato correto "12345678"), e então é retornado uma promise contendo o erro ou as informações do CEP.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

(async () => {

   try{
      const info_cep = await CepCoords.getInfoCep("06310390");
   } catch (err) {
      //o parâmetro 'err' possui o código do erro http
   }

})()


// OU

CepCoords.getInfoCep("06310390")
.then(info_cep => {
   //retorna o mesmo 'info_cep' da versão em promise
})
.catch(err => {
   //retorna o mesmo parâmetro 'err' da versão em promise
})

Parâmetro 'info_cep':

{
  cep: '06310-390',
  logradouro: 'Avenida Francisco Pignatari',
  complemento: '',
  bairro: 'Vila Gustavo Correia',
  localidade: 'Carapicuíba',
  uf: 'SP',
  unidade: '',
  ibge: '3510609',
  gia: '2550'
}

Erros possíveis (parâmetro 'err'):

  • 400
  • 500

Função 'getByEndereco'

Nesta função é passado um parâmetro, o endereço (não possui um padrão "correto", mas seguir um modelo de pesquisa semelhante a "UF, município bairro rua numero" gera bons resultados), e então é retornado uma promise contendo o erro ou as coordenadas do endereço.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

(async () => {

   try{
      const coords = await CepCoords.getByEndereco("Sp, carapicuíba avenida francisco pignatari");
   } catch (err) {
      //o parâmetro 'err' possui o código do erro http
   }

})()

// OU

CepCoords.getByEndereco("Sp, carapicuíba avenida francisco pignatari")
.then(coords => {
   //retorna o mesmo 'coords' da versão em promise
})
.catch(err => {
   //retorna o mesmo parâmetro 'err' da versão em promise
})

Parâmetro 'coords':

{
  lat: -23.5235,
  lon: -46.8407
}

Erros possíveis (parâmetro 'err'):

  • 404
  • 500

Função 'getDistEntreCeps'

Nesta função são passados dois parâmetro, os CEPs (por exemplo "12345-678" ou "123456789" são incorretos, sendo o formato correto "12345678"), e então é retornado uma promise contendo o erro ou a distancia (em quilômetros) entre os CEPs.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

(async () => {

   try{
      const distancia = await CepCoords.getDistEntreCeps("06310390", "06600025");
   } catch (err) {
      //o parâmetro 'err' possui o código do erro http
   }

})()

// OU

CepCoords.getDistEntreCeps("06310390", "06600025")
.then(distancia => {
   //retorna o mesmo 'distancia' da versão em promise
})
.catch(err => {
   //retorna o mesmo parâmetro 'err' da versão em promise
})

Parâmetro 'distancia':

//numero
5.98

Erros possíveis (parâmetro 'err'):

  • 400
  • 404
  • 500

Função 'getDistEntreEnderecos'

Nesta função são passados dois parâmetros, os endereços (não possui um padrão "correto", mas seguir um modelo de pesquisa semelhante a "UF, município bairro rua numero" gera bons resultados), e então é retornado uma promise contendo o erro ou a distancia (em quilômetros) entre os endereços.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

const endereco1 = "Sp, carapicuíba avenida francisco pignatari";
const endereco2 = "Sp, jandira rua elton silva";

(async () => {

   try{
      const distancia = await CepCoords.getDistEntreEnderecos(endereco1, endereco2);
   } catch (err) {
      //o parâmetro 'err' possui o código do erro http
   }

})()

// OU

CepCoords.getDistEntreEnderecos(endereco1, endereco2)
.then(distancia => {
   //retorna o mesmo 'distancia' da versão em promise
})
.catch(err => {
   //retorna o mesmo parâmetro 'err' da versão em promise
})

Parâmetro 'distancia':

//numero
5.98

Erros possíveis (parâmetro 'err'):

  • 400
  • 404
  • 500

Função 'getDistancia'

Nesta função são passados dois parâmetros, as coordenadas (ambas em formato JSON) contendo a latitude (sempre como 'lat') e a longitude (sempre como 'lon'), e então é retornado uma promise contendo o erro ou a distancia (em quilômetros) entre as coordenadas.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

const coord1 = {
   lat: -23.5235,
   lon: -46.8407
};

const coord2 = {
   lat: -23.5283,
   lon: -46.8991
};

const distancia_km = CepCoords.getDistancia(coord1, coord2);

Parâmetro 'distancia_km':

//numero
5.98

Erros possíveis (parâmetro 'err'):

  • 400
  • 404
  • 500

Tratamento de erros

Os erros (códigos HTTP) que podem ser retornados das promises do Coordenadas Do CEP são os seguintes

  • 400 (Má requisição) - Este erro pode ocorrer devido ao CEP possuir algum caractere inválido na hora da buscar, ou o mesmo estando em um formato incorreto.

  • 404 (Não encontrado) - Este erro ocorre pois provavelmente o CEP foi encontrado, porem não foi possível encontrar as coordenadas do mesmo (informações em como suprimir este erro em 'Aproximação' na seção sobre a função 'setOpcoes'), ou o endereço (caso esteja utilizando a função 'getByEndereco') não foi encontrado.

  • 500 (Erro de servidor) - Este erro ocorre devido a alguma falha no server-side de algumas das API's utilizadas (devido queda de internet, o servidor fora do ar, etc).

Exemplo de tratamento do erro 404 (aplicável a todos os outros)

const CepCoords = require("coordenadas-do-cep");


(async () => {

   try{
      const info = await CepCoords.getByCep("06310390");
   } catch (err) {

      if(err == 404){
      //... faça algo no caso de um erro 404
      }

   }

})()

// OU

CepCoords.getByCep("06310390")
.then(info => {
   //faça algo
})
.catch(err => {

   if(err == 404){
      //... faça algo no caso de um erro 404
   }

})

Função 'setOpcoes'

Esta função permite que você "customize" o JSON de retorno de algumas funções, ela não possui retorno, só necessita que seja passado um JSON com as opções.

Exemplo:

const CepCoords = require("coordenadas-do-cep");

CepCoords.setOpcoes({
   busca_aproximada: false,
   precisao: 6,
   casas_dec_dist: 1
})

Aproximação (Funciona apenas na função 'getByCep')

A aproximação vai basicamente permitir o fim do erro 404 da função 'getByCep'.

Ela irá funcionar da seguinte maneira:

  1. As coordenadas do endereço pertencente ao CEP não serão encontradas.
  2. Então, ele ira buscar as coordenadas de forma menos especifica, se utilizando apenas do estado e do município ao qual pertencem o CEP, assim retornando as coordenadas do centro do município do CEP.

A aproximação já vem setada como ativa por padrão, caso deseje desativar-la, coloque ela como false no 'setOpcoes'.

const CepCoords = require("coordenadas-do-cep");

CepCoords.setOpcoes({ busca_aproximada: false })

Precisão (Funciona apenas nas funções 'getByCep' e 'getByEndereco')

Quando estamos falando de coordenadas, estamos falando também de números com muitas casas decimais, e quanto mais casas decimais a latitude e a longitude possuírem, mais precisas elas serão em determinar uma localização (por exemplo a latitude 14.9873 é mais precisa que a latitude 14.9).

Por padrão a precisão é de 4 casas decimais, que oferece uma exatidão de até 11 metros até a localização do CEP.

Os valorem que são permitidos vão de 0 até 7, segue tabela:

Casas Exemplo Precisão
0 1 111.3 km
1 1.1 11.1 km
2 1.01 1.1 km
3 1.001 111.3 m
4 (Padrão) 1.0001 11.1 m
5 1.00001 1.1 m
6 1.000001 11.1 cm
7 1.0000001 1.1 cm

Por exemplo, para usar uma precisão de 2 dígitos ao invés dos 4 padrão, é só adicionar a mesma ao 'setOpcoes'.

const CepCoords = require("coordenadas-do-cep");

CepCoords.setOpcoes({ precisao: 2 })

Numero de casas decimais da distância (Funciona apenas nas funções 'getDistEntreCeps', 'getDistEntreEnderecos' e 'getDistancia')

Este parametro basicamente permite mudar o numero de casas decimais que a distancia possuirá, o padrão é 2, mas você caso queira mudar coloque o valor desejado no 'setOpcoes'.

const CepCoords = require("coordenadas-do-cep");

CoordenadasDoCep.setOpcoes({casas_dec_dist: 5});

Código Fonte

O código pode ser acessado pelo repositório oficial

Licença

Eiffel Forum License, version 2

coordenadas-do-cep's People

Contributors

viniciusm2001 avatar

Stargazers

Rodrigo Nishino avatar Bruno Santos avatar Matheus Alves avatar Jonathan Henrique avatar Felipe Massola avatar Roberto Felipe  avatar Lucas Bezerra avatar Jonas Augusto Kunzler avatar LUÍS CARLOS DE SOUZA  MENEZES avatar isabel avatar Thiago Santos Teixeira avatar Bruno Fernando dos Santos Silva avatar Samer avatar Guilherme Branco Stracini avatar Marcelo Daniel avatar Nidelson Gimenez avatar

Watchers

Rodrigo Nishino avatar Nidelson Gimenez avatar Marcelo Daniel avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.