geolocalização

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

geolocalização

Mensagem por cjp »

Pessoal,

Estou tentando usar geolocalização em uma aplicação HTML + PHP.

Vi neste link uma forma bem simples de usar: http://www.w3schools.com/html/html5_geolocation.asp.


Desta forma funcionou perfeitamente.

A única que eu precisava, e que não estou conseguindo, é salvar os dados de latitude e longitude para uma tabela MySQL, ou seja, precisaria apenas do conteúdo de x.innerHTML.

Basicamente, eu precisaria salvar estes dados numa variável, para depois acrescê-la na tabela. E é justamente neste ponto que estou me batendo. Já testei de várias formas, em HTML puro ou acrescendo PHP, mas não funciona.

Alguém poderia me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

geolocalização

Mensagem por Toledo »

Amigo, uma solução que encontrei foi chamar um arquivo PHP dentro da função criada pelo javascript:

arquivo geo.html

Código: Selecionar todos

<html>
<body>
<p>Click the button to get your coordinates.</p>
<button onclick="getLocation()">Try It</button>
<p id="demo"></p>
<script>
var x = document.getElementById("demo");

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}

function showPosition(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;

    var url_php = "https://pctoledo.org/temp/geo.php?lat="+lat+"&lon="+lon;
    location.href= url_php;

}
</script>
</body>
</html>
arquivo geo.php

Código: Selecionar todos

<?php
$lat = ( isset($HTTP_POST_VARS['lat']) ) ? $HTTP_POST_VARS['lat'] : $HTTP_GET_VARS['lat'];
$lon = ( isset($HTTP_POST_VARS['lon']) ) ? $HTTP_POST_VARS['lon'] : $HTTP_GET_VARS['lon'];
$geo = "Latitude: ".$lat."< br >Longitude: ".$lon;
print_r($geo);
?>
Obs.: na linha 4 tirar os espaços que estão em < br >

Então, no arquivo PHP você pode pegar as variáveis $lat e $lon e gravar da maneira que você quiser.

Teste: https://pctoledo.org/temp/geo.html

Lembrando: no seu servidor as variáveis $HTTP_POST_VARS e $HTTP_GET_VARS são capturadas de outra maneira, então veja outros códigos que já passei para você.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

geolocalização

Mensagem por cjp »

Muito obrigado, Toledo.

No teu site funcionou perfeitamente.

No meu também. Fiz a adaptação do HTPP, e ficou ok.

Mas agora estou tentando inserir este script na função que estou fazendo, e daí, não sei porque, não está funcionando.

Sei que devo ter feito algo errado, pois não sei bem como inseri-lo dentro da minha função.

Veja como estou fazendo. O primeiro arquivo ficou assim:

Código: Selecionar todos

    <html>
	
	
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Controle do carro</title>
    <body>

	
    <form id="carro" name="carro" method="post" action="cadcarro.php" onsubmit="return validaCampo(); return false;">
      <table width="625" border="0">
		<br>
		<br>
	  
	   Favor preencher os dados abaixo:
	  
		<br>
		<br>
	  
        <tr>
          <td width="89">Quilometragem atual:</td>
          <td width="546"><input name="km" type="text" id="km" size="10" maxlength="10" />
            <span class="style1"></span></td>
        </tr>
        <tr>
          <td width="69">Local do cadastro:</td>
          <td width="546"><input name="local" type="text" id="local" size="20" maxlength="20" />
            <span class="style1"></span></td>
        </tr>
		
		<br>
		<br>
		
		
        <tr>
          <td colspan="4"><p>
<button onclick="getLocation()">Cadastrar dados</button>
<p id="demo"></p>
           
     
              <input name="limpar" type="reset" id="limpar" value="Limpar Campos preenchidos" />
             
     
              <span class="style1">         </span></p>
          <p>  </p></td>
        </tr>
      </table>
    </form>
    </body>
    </html>
	

	
	
	
	
	
	<script>
var x = document.getElementById("demo");

	
function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  var lat = position.coords.latitude;
  var lon = position.coords.longitude;

  var url_php = "http://www.inaciocarvalho.com.br/php/cadcarro.php?lat="+lat+"&lon="+lon;
  location.href= url_php;

}
</script>
</body>
</html>	

O segundo, ainda não terminado, está assim:

Código: Selecionar todos


<html>
 <head>
 </head>
 <body>
<?php


$km = $_POST['km'];
$lc = $_POST['local'];
$hr = (date('H')).":".date('i').":".date('s');
$dt = date('Y')."-".date('m')."-".date('d');


$lat = ( isset($_POST['lat']) ) ? $_POST['lat'] : $_GET['lat'];
$lon = ( isset($_POST['lon']) ) ? $_POST['lon'] : $_GET['lon'];



echo "<font face='arial' color='orange' size='50'>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "Km: ".$km;
echo "<br>";
echo "<br>";
echo "Local: ".$lc; 
echo "<br>";
echo "<br>";
echo "Latitude: ".$lat;
echo "<br>";
echo "<br>";
echo "Longitude: ".$lon;
echo "<br>";
echo "<br>";

 echo "<br>";
 echo '<form action="carro.php"';
 echo "width='65%' style='height:150px;'>";
 echo "<br>";
 echo "<br>";
 echo "<br>";
 echo "<input size='35' style='font-size:120px' type='submit' id='Voltar' value='Voltar'>";
 echo "</form>";

?>
Neste caso, as variáveis $lon e $lat estão em branco.
Inacio de Carvalho Neto
Responder