
Originariamente inviata da
Svipla
Ciao e grazie per l'aiuto
Io vedo, per esempio, si di coupon che automaticamente selezionano la mia provincia e non mi spiego come fanno senza chiedere permesso.
Se usi le API di Google l'utente che si connette al tuo sito deve darti l'autorizzazione per essere "Geolocalizzato", vengono resituite la latitudine, longitudine e precisione, con queste coordinate, sempre tramite le API di Google, puoi avere tutti i dati di cui necessiti.
Se l'utente si connette da da un computer fisso l'approsimazione può essere anche di 25Km, se dal computer da cui si collega ci sono altri dispositivi quali una scheda wifi, l'approssimazione è di qualche decina di metri, se si connette da un cellulare che ha il GPS acceso l'approsimazione è di qualche centimetro!
Una volta data l'autorizzazione da quel computer per il tuo sito, rimane e non viene più richiesta, l'utente potrà modificare l'autorizzazione entrando nelle preferenze del suo navigatore.
Le api di google le richiami da html con questa linea:
codice:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
con il parametro sensor=true stai chiedendo che si utilizzino tutti i sensori presenti nel dispositivo quali(GPS ,schede wifi) per sapere la geolocalizzazione dell'utente.
Devi creare poi un div con id="actual" e z-index:10;
L'esempio è il seguente:
codice:
window.onload=function(){
//nel load verificaremo di poter ottenere questi dati e se è possibile realizzaremo una la richiesta
if(navigator.geolocation!=undefined){
//la richiesta è asincrona e dovrá essere vincolata ad un dominio
navigator.geolocation.getCurrentPosition(geolocalizacionObtenida,error);
}else{alert("Il tuo navigatore non supporta la Geolocalizzazione");}
};
function geolocalizacionObtenida(posicion){
//Mostriamo la latitudine, longitudine e precisione
actual.innerHTML="";
actual.innerHTML+="<strong>Latitud:"+posicion.coords.latitude;
actual.innerHTML+="<strong>Longitud:"+posicion.coords.longitude;
actual.innerHTML+="<strong>Precisión:"+posicion.coords.accuracy;
//Chiamiamo la funzione che si incarica di creare la cartina di google maps e centra la cartina nel punto ettenuto, passeremo latitudine e longitudine
crearGoogleMap(posicion.coords.latitude,posicion.coords.longitude);
}
function error(er){
alert("Errore :"+er.message);
}
Tieni conto che per fare dei test il tuo codice DEVE essere su un host, se lo fai da locale devi aver installato ad esempio un WAMPSERVER e utilizzare localhost (non vale far partire direttamente il codice da c:\\miadirectory\index.html, non funzionerà)
Inoltre la richiesta è asincrona!
Ciao