2013-02-19 3 views
1

Heey People,HTML5 геолокация iphone

Я написал что-то, чтобы найти местоположение gps моего iphone. Если мое местоположение найдено, оно должно показывать мое местоположение в поле оповещения.

Но, по-видимому, он продолжает показывать мне оповещение на моем iphone снова и снова.

Я написал свой класс, чтобы установить функцию обратного вызова. Потому что, когда вы пытаетесь получить свое местоположение, оно не устанавливается до вашего обнаружения.

Функция обратного вызова будет выполнена, когда ваше местоположение будет найдено.

Может ли кто-нибудь сказать мне, как остановить отслеживание местоположения после того, как я нахожусь?

Мой класс:

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(); 

Путь я использую класс:

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

Попробуйте navigator.geolocation.clearWatch() как только вы получите свое первое местоположение. – Ares

+0

Thx для подсказки, но причина, по которой он не работал должным образом, состоял в том, что я допустил ошибку в функции getLattitude, попросил ее снова там –

ответ

0

я ве нашел мою проблему, я просил мое местоположение снова в методе getLattitude. После удаления это работает отлично.

Смежные вопросы