[Javascript] Geolocalizzazione con condizione

rob2002

Nuovo Utente
3 Feb 2017
6
0
1
Salve, ho necessità di condizionare la funzione di geolocalizzazione. In altre parole se l'utente si trova ad una certa latitudine e longitudine deve scattare un evento( un bip, una musica, ecc...)
Questo è lo script:
HTML:
<!doctype html>
<html>
<head>
    <title> Geolocalizzazione </title>
    <script>
    var id_watch = null;
 
    inCasoDiSuccesso = function(position){
       document.getElementById("posizione_corrente").insertAdjacentHTML('beforeend', "<li> Lat: " + position.coords.latitude + ", Lon: " + position.coords.longitude + "</li>");
 
    }
    sospendiLaRicezione = function(){
        navigator.geolocation.clearWatch(id_watch);
    } 
 
    window.onload = function(){
        id_watch = navigator.geolocation.watchPosition(inCasoDiSuccesso);
    }
    </script>
</head>
<body>
    <h1>La tua posizione attuale</h1>
    <menu type="toolbar">
        <button type="button" onClick="sospendiLaRicezione()">
            sospendi la ricezione di dati geospaziali
        </button>
    </menu>
    <ul id="posizione_corrente">
    </ul> 
</body>
</html>
Ora inserisco la mia condizione:

Codice:
    // condizione   
      if (position.coords.latitude == 00.00000 &&  position.coords.longitude == 00.00000)
      {
    System.out.println("Condizione verificata");
       }
// fine condizione

Mi potete aiutare ad inserire questa condizione nello script sopra indicato? Ho provato ma non funziona. GRAZIE.
 
Ultima modifica di un moderatore:
Ciao,
System.out.println() è la sintassi JAVA per scrivere qualcosa in JAVASCRIPT si usa document.write()
 
Intanto grazie per la tua informazione, ma volevo sapere anche come integrare la condizione nello script. Grazie mille.
 
la condizione mi sembra corretta, basta che la inserisci dentro la funzione inCasodiSuccesso()
 
Grazie Criric per la tua risposta, ma facendo così la condizione è sempre soddisfatta anche se la latitudine e la longitudine non coincidono... ti allego lo script secondo la mia logica:
HTML:
<!doctype html>
<html>
<head>
    <title> Geolocalizzazione </title>
    <script>
    var id_watch = null;
 
    inCasoDiSuccesso = function(position){
       document.getElementById("posizione_corrente").insertAdjacentHTML('beforeend', "<li> Lat: " + position.coords.latitude + ", Lon: " + position.coords.longitude + "</li>");
       // condizione   
      if (position.coords.latitude == 00.0000 &&  position.coords.longitude == 00.0000);
      {
    var snd = new Audio("suono.ogg");
    snd.play();
}
      {
    document.write("Condizione verificata");
       }
// fine condizione
    }
    sospendiLaRicezione = function(){
        navigator.geolocation.clearWatch(id_watch);
    } 
 
    window.onload = function(){
        id_watch = navigator.geolocation.watchPosition(inCasoDiSuccesso);
    }
    </script>
</head>
<body>
    <h1>La tua posizione attuale</h1>
    <menu type="toolbar">
        <button type="button" onClick="sospendiLaRicezione()">
            sospendi la ricezione di dati geospaziali
        </button>
    </menu>
    <ul id="posizione_corrente">
    </ul> 
</body>
</html>
Secondo te era lì che andava messo o so sbagliando posizione. :)
 
Ultima modifica di un moderatore:
hai messo troppe parentesi graffe e il punto e virgola non ci va
Codice:
if (position.coords.latitude == 00.0000 && position.coords.longitude == 00.0000) {
                    var snd = new Audio("suono.ogg");
                    snd.play();
                    document.write("Condizione verificata");
                }
 
Ciao Criric ho avuto modo di vedere il tuo sito e volevo farti i complimenti poichè ho avuto modo di accedere ad una funzione di troncamento dei decimali che non riuscivo a trovare.
Volevo approfittare della tua disponibilità per sottoporti questo maledetto script che non riesco a farlo funzionare su un telefono samsung nonostante il tuo aiuto eccolo:
HTML:
<script>
   var id_watch = null;
    inCasoDiSuccesso = function(position){
       document.getElementById("posizione_corrente").insertAdjacentHTML('beforeend', "<li> Lat: " + position.coords.latitude.toFixed(4) + ", Lon: " + position.coords.longitude.toFixed(4) + "</li>");
 
       // condizione
   var vlat;
   var vlon;
   vlat =  position.coords.latitude.toFixed(4);
   vlon = position.coords.longitude.toFixed(4);
if (vlat == 00.0000 && vlon == 00.0000) {
                    var snd = new Audio("/suono.WAV");
                    snd.play();
                    document.write("Condizione verificata");
                }
// fine condizione

    }
    sospendiLaRicezione = function(){
        navigator.geolocation.clearWatch(id_watch);
    }
 
    window.onload = function(){
        id_watch = navigator.geolocation.watchPosition(inCasoDiSuccesso);
    }
    </script>

Praticamente una volta che soddisfa la condizione si blocca il ciclo. Come faccio a dirgli di ricominciare ad attivare la funzione tra 30 secondi ad esempio il tempo che esegue un file musicale?
Grazie mille.
 
Ultima modifica di un moderatore:
Grazie per i complimenti.
La funzione write() sostituisce il contenuto della pagina con il parametro ricevuto quindi presumo annulli anche le funzioni javascript.
Toglila o sostituiscila con
Codice:
document.getElementById("condizione").innerHTML = "Condizione verificata";
dopo aver aggiunto nel body un div con id "condizione".

Dai un occhiata al messaggio #4 di Max 1 per la formattazione del codice che posti.
 

Discussioni simili