Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal,
Após muita pesquisa encontrei um recurso de geolocalização utilizando Nominatim (geolocalização reversa), para obter cidade, estado e pais usando as coordenadas de latitude e longitude (sendo estas detectadas automaticamente conforme sua posição)
Preciso que, a geolocalização que o browser detecte automaticamente ao entrar na pagina (isso esta ok!) seja salva no banco de dados, sem precisar ter um formulário (isso é o que preciso! ) como fiz no exemplo (estou enviando ao banco via ajax)
A pergunta é: Como enviar ao banco de dados a cidade, estado e pais, sem precisar ter um fomulário pra isso?
código do index.php
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<title>Geolocation</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<form id="localizacao" >
<input id="cidade" value="">
<input id="estado" value="">
<input id="pais" value="">
<button type="submit" class="btn btn-default ">Salvar</button>
</form>
<script type='text/javascript'>
var lati = '';
var long = '';
var cidade = '';
var estado = '';
var pais = '';
var dadosajax = '';
navigator.geolocation.getCurrentPosition(function (posicao) {
var url = "http://nominatim.openstreetmap.org/reverse?lat=" + posicao.coords.latitude + "&lon=" + posicao.coords.longitude + "&format=json&json_callback=preencherDados";
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
lati = posicao.coords.latitude;
long = posicao.coords.longitude;
});
function preencherDados(dados) {
cidade = dados.address.city;
estado = dados.address.state;
pais = dados.address.country;
alert('cordenadas:' + lati + ',' + long + ' Lugar:' + cidade + ',' + estado + ',' + pais);
document.getElementById('cidade').value = cidade;
document.getElementById('estado').value = estado;
document.getElementById('pais').value = pais;
dadosajax = {'cidade':cidade, 'estado':estado, 'pais':pais};
$("#localizacao").submit(function (e) {
e.preventDefault();
alert(dadosajax);
$.ajax({
type: "POST",
url: "teste6.php",
data: dadosajax
});
});
}
;
</script>
</body>
</html>
arquivo teste6.php
<?php
require_once './php/conn_db.php';
$cidade = $_POST['cidade'];
$estado = $_POST['estado'];
$pais = $_POST['pais'];
echo var_dump($cidade);
$sql = "INSERT INTO arq011 (codigo,cidade, estado, pais) VALUES (null, :cidade, :estado, :pais)";
$stmt = Conexao::getInstance()->prepare($sql);
$stmt->bindParam(':cidade', $cidade, PDO::PARAM_STR);
$stmt->bindParam(':estado', $estado, PDO::PARAM_STR);
$stmt->bindParam(':pais', $pais, PDO::PARAM_STR);
$executa = $stmt->execute();
?>
Espero ter sido claro!
Obrigado desde já.
Carregando comentários...