1

皆さん、

iPhoneのGPS位置を見つけるために何かを書きました。私の場所が見つかった場合、アラートボックスに私の場所が表示されます。

しかしどうやら、私の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);
4

1 に答える 1

0

問題が見つかりました。getLattitude メソッドで自分の位置を再度リクエストしました。これを削除した後、これは完璧に機能します。

于 2013-02-19T07:29:15.250 に答える