Ir para conteúdo

POWERED BY:

Arquivado

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

David Borges

API Maps 3 + asp + javascript

Recommended Posts

Olá pessoal, pegar a latitude e longitude do usuário e em seguida localizar sua cidade.

 

Googleando por aí, achei um exemplo que atende minhas necessidades. Através de HTML5 e a API do Google Maps ele encontra a latitude e longitude do usuário, e em seguida localiza o endereço do mesmo.

 

O problema desse script é que ele retorna a cidade em um "alert" em JS e preciso resgatar essa variável em ASP, afinal toda minha aplicação foi construída em ASP e preciso fazer interações com o banco de dados com essas variáveis (cidade, latitude e longitude)

 

O que preciso:

Resgatar de alguma forma essas variáveis para que possam ser utilizadas em meu script em asp.

 

Alguém sabe o que preciso saber para fazer isso?

 

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Reverse Geocoding</title> 

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
 var geocoder;

 if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
} 
//Get the latitude and the longitude;
function successFunction(position) {
   var lat = position.coords.latitude;
   var lng = position.coords.longitude;
   codeLatLng(lat, lng)
}

function errorFunction(){
   alert("Geocoder failed");
}

 function initialize() {
   geocoder = new google.maps.Geocoder();



 }

 function codeLatLng(lat, lng) {

   var latlng = new google.maps.LatLng(lat, lng);
   geocoder.geocode({'latLng': latlng}, function(results, status) {
     if (status == google.maps.GeocoderStatus.OK) {
     //console.log(results);
       if (results[1]) {
       var indice=0;
       for (var j=0; j<results.length; j++)
       {
           if (results[j].types[0]=='locality')
               {
                   indice=j;
                   break;
               }
           }
       alert('The good number is: '+j);
       console.log(results[j]);
       for (var i=0; i<results[j].address_components.length; i++)
           {
               if (results[j].address_components[i].types[0] == "locality") {
                       //this is the object you are looking for
                       city = results[j].address_components[i];
                   }
               if (results[j].address_components[i].types[0] == "administrative_area_level_1") {
                       //this is the object you are looking for
                       region = results[j].address_components[i];
                   }
               if (results[j].address_components[i].types[0] == "country") {
                       //this is the object you are looking for
                       country = results[j].address_components[i];
                   }
           }

           //city data
           alert(city.long_name + " || " + region.long_name + " || " + country.short_name)


           } else {
             alert("No results found");
           }
       //}
     } else {
       alert("Geocoder failed due to: " + status);
     }
   });
 }
</script> 
</head> 
<body onload="initialize()"> 

</body> 
</html> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

v ocê poderia jofghar essas variaveis em um txt atraves do js e recuperar elas pelo ASP lendo pelo FSO seu txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum, obrigado pela resposta.

 

Atualmente a aplicação está fase de testes na empresa e possui poucos utilizadores, porém esse cenário irá mudar em questão de dias.

 

Da essa forma que você sugeriu terei mais requisições para cada usuário e provavelmente terei problemas futuros na questão de desempenho.

 

Possui alguma outra sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o AJAX do jQuery, para ficar mais fácil, via GET, melhor ainda, você pode mandar esses dados para um arquivo ASP, salvando eles em uma session, ou cookie, ou banco...

 

A outra é usando o cookies do jQuery para mandar cookies para o navegador e depois resgatar com ASP, detalhe, o ASP só vai enxergar os cookies depois de um refresh na página!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ted k', obrigado pela ajuda!

 

Realmente, a session seria a melhor saída para mim.

 

Mas analisando a lógica do sistema, ví que dá para fazer tudo sem tratar a variável com asp, usando apenas o js para imprimir em um input o resultado, para depois o usuário dar um submit no form.

 

Estou tentando usar esse script que postei e criar 3 variáveis, cidade, latitude e longitude, em js mesmo, mas não estou conseguindo printar nada na tela.

 

O que eu preciso agora é que os valores gerados nas funções em js sejam armazenadas para que eu possa utilizá-las quantas no HTML da página, em locais específicos do form.

 

Podem me ajudar, por favor?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é como meu grande amigo Ted´k disse

você pode mandar esses dados para um arquivo ASP, salvando eles em uma session, ou cookie, ou banco...

ou jogá-lo em um txt também

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum, conforme disse, não preciso mais manipular esses dados através do ASP.

 

Vou mostrá-los em um campo de input text no form e o usuário irá submetê-los à uma nova página.

 

O problema é que não estou conseguindo printar esses dados na tela mesmo usando o js, pois não estou conseguindo armazenar latitude, longitude e cidade em uma variável do próprio js.

 

Todo document.write que dou no js vem em branco com essas variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre como está no momento, assim poderemos ajudar, e se for o caso enviar para a área de JavaScript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por tentar ajudar Salgado.

 

Abaixo segue o código e o que preciso é:

 

- Guardar as os valores da Latitude, Longitude, Cidade e Estado em variáveis próprias;

- Printar cada variável no código html.

 

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Reverse Geocoding</title> 

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
 var geocoder;

 if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
} 
//Get the latitude and the longitude;
function successFunction(position) {
   var lat = position.coords.latitude;
   var lng = position.coords.longitude;
   codeLatLng(lat, lng)
}

function errorFunction(){
   alert("Geocoder failed");
}

 function initialize() {
   geocoder = new google.maps.Geocoder();



 }

 function codeLatLng(lat, lng) {

   var latlng = new google.maps.LatLng(lat, lng);
   geocoder.geocode({'latLng': latlng}, function(results, status) {
     if (status == google.maps.GeocoderStatus.OK) {
     //console.log(results);
       if (results[1]) {
       var indice=0;
       for (var j=0; j<results.length; j++)
       {
           if (results[j].types[0]=='locality')
               {
                   indice=j;
                   break;
               }
           }
       alert('The good number is: '+j);
       console.log(results[j]);
       for (var i=0; i<results[j].address_components.length; i++)
           {
               if (results[j].address_components[i].types[0] == "locality") {
                       //this is the object you are looking for
                       city = results[j].address_components[i];
                   }
               if (results[j].address_components[i].types[0] == "administrative_area_level_1") {
                       //this is the object you are looking for
                       region = results[j].address_components[i];
                   }
               if (results[j].address_components[i].types[0] == "country") {
                       //this is the object you are looking for
                       country = results[j].address_components[i];
                   }
           }

           //city data
           alert(city.long_name + " || " + region.long_name + " || " + country.short_name)


           } else {
             alert("No results found");
           }
       //}
     } else {
       alert("Geocoder failed due to: " + status);
     }
   });
 }
</script> 
</head> 
<body onload="initialize()"> 

</body> 
</html> 

Compartilhar este post


Link para o post
Compartilhar em outros sites
//city data

alert(city.long_name + " || " + region.long_name + " || " + country.short_name)

Aparentemente nesse ponto você consegue os dados de Cidade e Estado. Latitude e Longitude já estão em variáveis, mas locais em uma função, a princípio seria apenas criar/declará-las fora da função.

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.