Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
Componente TGeoCode Olá pessoal. Como houveram pedidos para esse componente, resolvi desenvolver ele. Esse componente serve para encontrar a latitude e a longitude usando um endereço. Para usá-lo é muito simples: $geocode = new TGeoCode('Endereço a ser localizado'); $geocode->request(); if($geocode->getStatus() == 'OK') { echo $geocode->getLat(); echo $geocode->getLng(); echo $geocode->getForma...
GF
Componente TGeoCode  
Fechado
Olá pessoal. Como houveram pedidos para esse componente, resolvi desenvolver ele. Esse componente serve para encontrar a latitude e a longitude usando um endereço. Para usá-lo é muito simples:

$geocode = new TGeoCode('Endereço a ser localizado');
$geocode->request();

if($geocode->getStatus() == 'OK') {

echo $geocode->getLat();
echo $geocode->getLng();
echo $geocode->getFormattedAddress();
}

É isso ai! Espero que tenham gostado.

GURUX

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (7)


FC

Falo nada !!! esses caras são feras !!!! vai quebrar minha arvore aqui...
PD

Show de bola :-)

Parabéns GURUX!
PL

Muito massa ..
JA

o endereco formatado retornou outra cidade, porque ?
JA

descobrir, estava usando somente o nome da rua na pesquisa, quando incluir rua,cidade ele retornou correto.

Como seria para criar o link para abrir no google maps?
RB

Guilherme,

Estou tentando gravar o endereço retornado pela classe acima, porém sem sucesso, pode me auxiliar.

Preciso pegar apenas o latitude e longitude e gravar no banco.

 
  1. <?php
  2. /*
  3. *Método responsável por retornar o id endereco
  4. *cadastrado na base de dados
  5. *@param cep
  6. */
  7. public static function BuscaEnderecoId($cep)
  8. {
  9. try
  10. {
  11. TTransaction::open('centinel');
  12. //cria um repositório para carregar 'Endereco'
  13. $endereco = new TRepository('Endereco');
  14. $limit = 1;
  15. //cria um critério para seleção de dados
  16. $criteria = new TCriteria;
  17. $criteria->add(new TFilter('cep', '=',str_replace("-","", $cep)));
  18. $criteria->setProperty('limit',$limit);
  19. $objects = $endereco->load($criteria);
  20. if($objects)
  21. {
  22. foreach($objects as $object)
  23. {
  24. $id_cep = $object->id ;
  25. }
  26. return $id_cep ;
  27. }
  28. TTransaction::close(); // fecha a transação.
  29. }
  30. catch (Exception $e)
  31. {
  32. new TMessage('error', $e->getMessage());
  33. }
  34. }
  35. /**
  36. * Method getpessoa_enderecos
  37. */
  38. public function get_pessoa_endereco()
  39. {
  40. $criteria = new TCriteria;
  41. $criteria->add(new TFilter('endereco_id', '=', $this->id));
  42. return PessoaEndereco::getObjects( $criteria );
  43. }
  44. public static function BuscaCepWeb($Cep)
  45. {
  46. $Cep = preg_replace("/D/","", $Cep);
  47. if ($Cep != "")
  48. {
  49. $resultado = simplexml_load_string( @file_get_contents("http://viacep.com.br/ws/".$Cep."/xml/"));
  50. $erro = (string) $resultado->erro;
  51. if (!$erro)
  52. {
  53. $geocode = new TGeoCode($resultado->logradouro);
  54. $id_cep = Endereco::BuscaEnderecoId($Cep);
  55. if(!empty($id_cep))
  56. {
  57. $objects['id'] = $id_cep; // retorno vindo do banco
  58. $objects['cep'] = (string) $resultado->cep;
  59. $objects['logradouro'] = (string) $resultado->logradouro;
  60. $objects['complemento'] = (string) $resultado->complemento;
  61. $objects['bairro'] = (string) $resultado->bairro;
  62. $objects['localidade'] = (string) $resultado->localidade;
  63. $objects['uf'] = (string) $resultado->uf;
  64. $objects['unidade'] = (string) $resultado->unidade;
  65. $objects['ibge'] = (string) $resultado->ibge;
  66. $objects['gia'] = (string) $resultado->gia;
  67. if($geocode->getStatus() == 'OK') {
  68. $objects['latitude'] = (string)$geocode->getLat();
  69. $objects['longitude'] = (string)$geocode->getLng();
  70. // $format_adress = $geocode->getFormattedAddress();
  71. }
  72. return $objects;
  73. }
  74. else
  75. {
  76. $obj = Endereco::addEndereco($resultado,$geocode);
  77. if(!empty($obj))
  78. {
  79. return $obj;
  80. }
  81. }
  82. } else return FALSE;
  83. } else return FALSE;
  84. }
  85. public static function addEndereco($endereco,$geocode)
  86. {
  87. try
  88. {
  89. $data_atual = date('Y-m-d H:i:s');
  90. TTransaction::open('centinel');
  91. $add_endereco = new Endereco;
  92. $add_endereco->cep = (string)str_replace('-','',$endereco->cep);
  93. $add_endereco->logradouro = (string)$endereco->logradouro;
  94. $add_endereco->bairro = (string)$endereco->bairro;
  95. $add_endereco->cidade = (string)$endereco->localidade;
  96. $add_endereco->uf = (string)$endereco->uf;
  97. $add_endereco->codigo_ibge = (string)$endereco->ibge;
  98. $add_endereco->gia = (string)$endereco->gia;
  99. $add_endereco->latitude = (string)$geocode->getLat();
  100. $add_endereco->longitude = (string)$geocode->getLng();
  101. $add_endereco->criacao = $data_atual;
  102. $add_endereco->atualizacao = $data_atual;
  103. $add_endereco->store();
  104. //print_r($add_endereco).'<br>';
  105. TTransaction::close();
  106. }
  107. catch (Exception $e) {
  108. new TMessage('error', $e->getMessage());
  109. }
  110. return;
  111. }
  112. ?>
LF

Não estou conseguindo baixar a classe... poderia disponbilizar novamente?