Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gbsena

Como extrair latitude e longitude de um endereço e cadastrar em um BD

Recommended Posts

Ola boa tarde a todos.

 

Gostaria da ajuda de vocês para um problema que estou tendo para conseguir extrair de um endereço cadastrado em um banco de dados, a latitude e longitude e inserir essas informações no banco. Tenho a seguinte tabela: marcadores com os campos: codigo , nome , endereco , bairro , cep , lat , lng sendo que possuo esses endereços cadastrados, só não tenho as latitudes e longitudes dos mesmos. Os campos lat e lng estão como nulos e através de um script em php eu gostaria de fazer uma consulta para retornar os endereços e a partir destes endereços utilizando a Api do google maps extraindo a latitude e longitude e depois inserir no banco essas duas informações.

 

Já estou quebrando a cabeça já há algum tempo.

Agradeço muito quem puder me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a API GeoCode do google maps. Não será em PHP, será em JavaScript.

Assim você poderá atualizar sua data base. Depois, utilize requisições por cadastros, para manter atualizado o novo endereço ou endereço editado. Assim evita ter que rodar script para atualizar vários endereços.

 

Neste link (inglês) você vai encontrar o código e link com exemplo.

http://stackoverflow.com/questions/9912441/google-maps-lat-long-finder-script

 

Link da documentação:

https://developers.google.com/maps/documentation/geocoding/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este exemplo ainda não resolve meu problema pois tenho os endereços cadastrados em meu banco e preciso fazer um select nesses endereços e através de um array inserir a latitude e longitude de cada um no banco de dados.

Já utilizei vários exemplos da api do google inclusive um que mostra passa a passo como extrair a latitude e longitude de endereços cadastrados no banco: https://developers.google.com/maps/articles/phpsqlgeocode?hl=pt-BR,

fiz exatamente como mostra neste exemplo mas apresenta mais aparece um erro. Segue o script que estou tendo problemas.

 

Arquivo de Conexão: conexao.php

 

<?php

$_ENV["host"] = "ip do meu servidor";

$_ENV["login"] = "meu login";

$_ENV["senha"] = "senha";

$_ENV["db"] = "mapa";

$conn = mysql_connect($_ENV["host"], $_ENV["login"], $_ENV["senha"]) or die ("Falha na Conexao");

mysql_select_db($_ENV["db"], $conn) or die ("Falha na Selecao do Banco");

?>

 

Arquivo de execução do script: codificar.php

 

<?php

require("conexao.php");

ini_set('max_execution_time','600');

define("MAPS_HOST", "maps.google.com");

define("KEY", "minha key");

 

// Select all the rows in the markers table

$query = "SELECT * FROM markers2 WHERE 1";

$result = mysql_query($query);

if (!$result) {

die("Invalid query: " . mysql_error());

}

 

// Initialize delay in geocode speed

$delay = 0;

$base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml&key=" . KEY;

 

// Iterate through the rows, geocoding each address

while ($row = @mysql_fetch_assoc($result))

{

$geocode_pending = true;

while ($geocode_pending)

{

$address = $row["address"];

$id = $row["id"];

$request_url = $base_url . "&q=" . urlencode($address);

$xml = simplexml_load_file($request_url) or die("url not loading");

 

$status = $xml->Response->Status->code;

if(strcmp($status, "200") == 0)

{

// Successful geocode

$geocode_pending = false;

$coordinates = $xml->Response->Placemark->Point->coordinates;

$coordinatesSplit = split(",", $coordinates);

// Format: Longitude, Latitude, Altitude

$lat = $coordinatesSplit[1];

$lng = $coordinatesSplit[0];

 

$query = sprintf("UPDATE markers2 " .

" SET lat = '%s', lng = '%s' " .

" WHERE id = '%s' LIMIT 1;",

mysql_real_escape_string($lat),

mysql_real_escape_string($lng),

mysql_real_escape_string($id));

$update_result = mysql_query($query);

if (!$update_result)

{

die("Invalid query: " . mysql_error());

}

}

else if (strcmp($status, "620") == 0)

{

// sent geocodes too fast

$delay += 100000;

}

else

{

// failure to geocode

$geocode_pending = false;

echo "Address " . $address . " failed to geocoded. ";

echo "Received status " . $status . "\n";

}

usleep($delay);

}

}

?>

 

Apresenta o seguinte erro.

 

Warning: simplexml_load_file(http://maps.google.com/maps/geo?output=xml&key=AIzaSyCLSEdvFtUD4WCBkI0-nvJylQ2HA73nk4A&q=rua+tiradentes,+Compensa,+Manaus-AM): failed to open stream: Uma tentativa de conexão falhou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou porque o host conectado não respondeu. in C:\webserver\apache\htdocs\sisconp\mapa\m4_lat_lng_inserir_bd\codificar.php on line 39 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://maps.google.com/maps/geo?output=xml&key=AIzaSyCLSEdvFtUD4WCBkI0-nvJylQ2HA73nk4A&q=rua+tiradentes,+Compensa,+Manaus-AM" in C:\webserver\apache\htdocs\sisconp\mapa\m4_lat_lng_inserir_bd\codificar.php on line 39 url not loading

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.