Exibindo Google Maps com PHP

Ter mapas do Google Maps em seu site é fácil usando a API do Google Maps, aqui neste exemplo criaremos um formulário onde o usuário digitará o endereço completo, pelo método POST enviaremos o endereço para uma função PHP que será responsável por retornar a latitude, longitude e zoom, com o javascript criaremos o mapa.

Primeiramente devemos entrar neste link http://code.google.com/intl/pt-BR/apis/maps/signup.html para obter a chave da API. Guarde-a pois usaremos mais adiante.

Crie um formulário HTML assim:

<html>

<head><title>Usando API do Google Maps com PHP</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=DIGITE AQUI SUA CHAVE" type="text/javascript"></script>
</head>
<body>
<form method="post" action="g_map.php">
Endereço: <input type="text" size="50" name="endereco"/><br/>
Cidade: <input type="text" size="50" name="cidade"/><br/>
UF: <input type="text" size="05" name="uf"/><br/>
<input type="submit" value="Gerar Mapa"/>
</form>
</body>
</html>

Salve o arquivo como GMAPS.html



Agora crie o arquivo g_map.php e insira nele o seguinte código:

<?php

class gMaps {
private $mapsHost = 'maps.google.com';
public $mapsKey ='DIGITE AQUI SUA CHAVE ';/
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;
} 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;
}
return array('lat' => $latitude, 'lon' => $longitude, 'zoom' => $zoom, 'endereco' => $endereco);
}
}

$end = $_POST["endereco"];
$cidade = $_POST["cidade"];
$uf = $_POST["uf"];
$endereco = $end.", ".$cidade.", ".$uf;

$gmaps = new gMaps('DIGITE AQUI SUA CHAVE');
$dados = $gmaps->geolocal($endereco);
$lat = $dados['lat'];
$lon = $dados['lon'];
$zoom = $dados['zoom'];


?>

<html>
<head><title>Google MAPS com PHP<title><head>
<body>

<div id="googleMap" width="400px" height="400px"></div>

<script type="text/javascript">
if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("googleMap"));
    var lat = <?php echo"$lat"; ?>; // Latitude do marcador
    var lon = <?php echo"$lon"; ?>; // Longitude do marcador
    var zoom = 16; // Zoom

    map.addControl(new GMapTypeControl());
    map.addControl(new GLargeMapControl());
    map.addControl(new GOverviewMapControl());
    map.removeMapType(G_HYBRID_MAP);
    map.setCenter(new GLatLng(lat,lon),zoom);

    var marker = new GMarker(new GLatLng(lat,lon));

    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml("<?php echo"$endereco";?>");
    });                                           

    map.addOverlay(marker);
    map.setCenter(point, zoom);
}
</script>
</body>
</html>

Salve o arquivo e chame o GMAPS.html pelo browser e digite algum endereço real para ver como ficou, o javascript coleta os dados enviados pela função PHP e cria o mapa carregando na div googleMap, com o tempo você saberá pegar o endereço em uma base MySQL e criar mapas. Espero que sirva para vocês. Abs...

2 comentários:

  1. Bom dia, amigo,
    Tentei usar essa ideia, porem o mapa nao e gerado!!!

    ( ja esta num servidor online )

    O que sera que pode ta dando problema???


    http://www.nomucho.com.br/mapa/mapa.html

    ( Ah.. tem um erro na linha 5 do php!! - uma / )

    FlowW!!

    ResponderExcluir
  2. Valeu cara!

    Para mim tb não apareceu o mapa... mas consegui pegar as coordenadas que era o que eu estava atraz!!

    Abraços

    ResponderExcluir