Publicidade (Anuncie Aqui)

Buscando a Latitude e Longitude de um endereço – Google Maps + PHP – Parte 1

Buscando a Latitude e Longitude de um endereço – Google Maps + PHP – Parte 1

Fala pessoal, hoje eu vou falar sobre uma funcionalidade que sempre tive interesse em desenvolver mas nunca parei para estudar sobre: Google Maps + PHP.

Vamos fazer um código que usa as APIs do Google Maps para buscar a latitude e longitude de um endereço qualquer, por exemplo: “Av. Brasil, 3014 – Rio de Janeiro, RJ“.

É necessário saber a latitude e longitude de um endereço para exibir um mapinha do Google Maps no seu site… O que será ensinado na parte 2 desse artigo.

Começando pelo começo

Antes de mais nada você, meu amigo desenvolvedor, precisa de uma Google Maps API Key (GMAK) que é um código que te permite usar as APIs do Google Maps e te identifica perante ao Google. Para criar a sua GMAK é só entrar nesse endereço e preencher o formulário.

Tendo sua GMAK em mãos, vamos ver a classe que usaremos para esse e os próximos tutoriais:

/**
 * gMaps Class
 *
 * Pega as informações de latitude, longitude e zoom de um endereço usando a API do Google Maps
 *
 * @author Thiago Belem <contato@thiagobelem.net>
 */
class gMaps {
	// Host do GoogleMaps
	private $mapsHost = 'maps.google.com';
	// Sua Google Maps API Key
	public $mapsKey = '';

	function __construct($key = null) {
		if (!is_null($key)) {
			$this->mapsKey = $key;
		}
	}

	function carregaUrl($url) {
		if (function_exists('curl_init')) {
			$cURL = curl_init($url);
			curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
			$resultado = curl_exec($cURL);
			curl_close($cURL);
		} else {
			$resultado = file_get_contents($url);
		}

		if (!$resultado) {
			return false;
			//trigger_error('Não foi possível carregar o endereço: <strong>' . $url . '</strong>');
		} else {
			return $resultado;
		}
	}

	function geoLocal($endereco) {
		$url = 'http://'. $this->mapsHost .'/maps/geo?output=csv&key='. $this->mapsKey .'&q='. urlencode($endereco);
		$dados = $this->carregaUrl($url);
		list($status, $zoom, $latitude, $longitude) = explode(',', $dados);
		if ($status != 200) {
			return false;
			//trigger_error('Não foi possível carregar o endereço <strong>"'.$endereco.'"</strong>, código de resposta: ' . $status);
		}
		return array('lat' => $latitude, 'lon' => $longitude, 'zoom' => $zoom, 'endereco' => $endereco);
	}
}

O uso dela é ridiculamente simples:

<?php
// Instancia a classe
$gmaps = new gMaps('SUA GMAK AQUI');

// Pega os dados (latitude, longitude e zoom) do endereço:
$endereco = 'Av. Brasil, 1453, Rio de Janeiro, RJ';
$dados = $gmaps->geolocal($endereco);

// Exibe os dados encontrados:
print_r($dados);
?>

Com isso já temos todas as informações necessárias para exibir um mapinha do GoogleMaps com o endereço marcado, o que faremos no próximo tutorial. :)

Parte 2: Exibindo mapas no seu site – Google Maps + PHP – Parte 2

Um grande abraço a todos!

Você também vai gostar de ler:

Postado em Artigos, PHP, Tutoriais

Com as tags , , , , , , , , , , , , , , , , , , , , , , ,

Escrito por Thiago Belem

Gostou desse artigo?

Não se esqueça de assinar o RSS e divulgue-o para o mundo:

  • Diogo Roldão
    Falae fio! Parabens pela iniciativa!

    Seguinte, criei a chave do google, coloquei meu arquivo de teste no FTP, tudo certo, copiei exatamente igual seu codigo, só mudei a chave. Qdo fui testar simplesmente nao acontece nada, fica tudo branco. O que vc sugere que seja?

    Obrigado!
  • Wolf
    Diogo, você converteu o endereço para UTF8? Pode ser isso.
    $endereco = utf8_encode($endereco);
    No meu caso utilizeo o exemplo para armazenar as coordenadas dos endereços no banco de dados.
    Veja funcionando aqui: http://www.cursoaprovacao.com.br/cidades/unidad...
  • Bom dia Tiago,

    Fiz o teste e deu este erro aqui... Fatal error: Class 'gMaps' not found in C:\wamp\www\googlemap\index5.php on line 62

    Você pode me ajudar.

    Desde já agradeço e parabéns pelo blog.
  • @Eduardo
    Você precisa incluir o arquivo com a classe... É importante ler a mensagem de erro: Fatal error: Class ‘gMaps’ not found in... significa Erro fatal: Classe 'gMaps' não encontrada em...
  • leo
    Muito bom o artigo, estou aplicando ele porém ele exibe um erro de js muito estranho "point não está definido"realmente ele é chamado no final da funcao mas não encontrei onde vc define ele ?

    aguardo um retorno, parabens pelo otimo blog vou divulgar pra todos amigos
  • @Leo
    Você está usando o script corretamente? Criou sua GMAK?

    Veja aqui um teste que fiz usando minha GMAK e funcionou..
  • milton
    não funciona!!! dá erro syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in test1.php on line 44

    line 44 é:
    $gmaps = new gMaps('ABQIAAAAx7fo1WMRXISKhQaLGEqrMNLPKtDveUrTsd4KnS8UxRs-9Bcd-zaFPHUT7g7LTIw3BdsOg');
  • @Milton
    "Não funciona" é diferente de "Não consegui fazer funcionar"... né?

    Por favor, copie aqui da linha 39 até a linha 49.
  • ntdeocle
    Então Tiago, põe um link aê no final dos artigos :0)
  • @ntdeocle
    Link do quê? O.o
  • Olá, tem como eu colocar a logomarca de um cliente na marcacao do endereço? e como faço isso? vc pode me ajudaR?
  • Olá Thiago. Parabens pelo seu blog. Acesso diariamente como fonte de recursos.

    Tenho uma dúvida em relação ao código acima:
    Como faço para adicionar mais de um endereço nesse mapa que vou exibir e que fiquem com marcadores personalizados?
  • Rubia
    Oi Thiago! Mais uma vez ótimo tutorial....impressionante...parabéns!
  • Thiago
    Mto bacana a dica
blog comments powered by Disqus