2013-02-19 4 views
1

Heey People,HTML5 géolocalisation iphone

J'ai écrit quelque chose pour trouver l'emplacement GPS de mon iPhone. Si mon emplacement est trouvé, il devrait indiquer ma position dans une alerte.

Mais apparemment, il ne cesse de me montrer la boîte d'alerte sur mon iPhone encore et encore.

J'ai écrit ma classe afin que je puisse définir une fonction de rappel. Parce que lorsque vous essayez d'obtenir votre position, il n'est pas défini jusqu'à ce que vous avez trouvé.

La fonction de rappel sera exécutée lorsque votre position sera trouvée.

Quelqu'un peut-il me dire comment arrêter le suivi de localisation après que je suis trouvé?

Ma classe:

GPS = function() { 
this.constructor(); 

} 

var gpsLatitude = 0.0, gpsLongitude = 0.0, gpsCallback; 

GPS.prototype.constructor = function(){ 
    this.getLocation(); 
} 

var afterNotification = function(){ 
    //Do something 
}; 

GPS.prototype.setCallback = function(myfunction){ 
    gpsCallback = myfunction; 
} 

GPS.prototype.getLocation = function(){ 
    if (navigator.geolocation) 
    { 
     navigator.geolocation.getCurrentPosition(this.showPosition, this.showError); 
    } 
    else{ 
     Lungo.Notification.error(
       "Error",      //Title 
       "Your device doesnt support GPS",  //Description 
       "cancel",      //Icon 
       7,       //Time on screen 
       afterNotification    //Callback function 
      ); 
    } 
    } 

GPS.prototype.showPosition = function(position) 
{ 
    gpsLatitude = position.coords.latitude; 
    gpsLongitude = position.coords.longitude; 
    gpsCallback(); 

} 

GPS.prototype.getLatitude = function() 
{ 
    return gpsLatitude; 
} 

GPS.prototype.getLongitude = function() 
{ 
    return gpsLongitude;  
} 

GPS.prototype.showError = function(error) 
    { 
    switch(error.code) 
    { 
    case error.PERMISSION_DENIED: 
      Lungo.Notification.error(
        "Error",      //Title 
        "Gebruiker staat geolocatie niet toe",  //Description 
        "cancel",      //Icon 
        7,       //Time on screen 
        afterNotification    //Callback function 
       ); 
     break; 
    case error.POSITION_UNAVAILABLE: 
      Lungo.Notification.error(
        "Error",      //Title 
        "Locatie niet beschikbaar",  //Description 
        "cancel",      //Icon 
        7,       //Time on screen 
        afterNotification    //Callback function 
       ); 
     break; 
    case error.TIMEOUT: 
     Lungo.Notification.error(
       "Error",      //Title 
       "Locatie timeout",  //Description 
       "cancel",      //Icon 
       7,       //Time on screen 
       afterNotification    //Callback function 
      ); 
     break; 
    case error.UNKNOWN_ERROR: 
     Lungo.Notification.error(
       "Error",      //Title 
       "Unkown location error",  //Description 
       "cancel",      //Icon 
       7,       //Time on screen 
       afterNotification    //Callback function 
      ); 
     break; 
    } 
    } 

var GPS = new GPS(); 

La façon dont j'utilise la classe:

var callback = function() 
      { 
       alert(GPS.getLongitude() + ", " + GPS.getLatitude()); 
      } 
      GPS.setCallback(callback); 
+1

Essayez navigator.geolocation.clearWatch() une fois que vous avez votre premier emplacement. – Ares

+0

Thx pour l'astuce, mais la raison pour laquelle il n'a pas fonctionné correctement était parce que j'ai fait une erreur dans la fonction getLattitude, l'a encore demandé là –

Répondre

0

Je, ai trouvé mon problème, je demande ma position à nouveau dans la méthode getLattitude. Après avoir enlevé c'est parfait.

Questions connexes