gbsena 0 Denunciar post Postado Outubro 19, 2012 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
Gabriel Heming 766 Denunciar post Postado Outubro 19, 2012 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
gbsena 0 Denunciar post Postado Outubro 21, 2013 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