2013-02-06 13 views
8

navigator.geolocation.getcurrentPositionを呼び出すと、成功したコールバックに1つ以上のパラメータを渡すにはどうすればよいですか?getCurrentPosition成功コールバックにパラメータを渡す方法はありますか?

devicereadyfoundLocからgetGeoLocに転送するにはどうすればよいですか?

var app = { 

    onDeviceReady: function() { 
     alert = window.alert || navigator.notification.alert; 

     app.getGeoLoc('deviceready'); 
    }, 

    getGeoLoc: function (id) { 
     navigator.geolocation.getCurrentPosition(this.foundLoc, this.noLoc, { timeout: 3 }); 
    }, 

    foundLoc: function (position) { 
     var parentElement = document.getElementById('deviceready'); 
     var lat = parentElement.querySelector('#lat'); 
     var long = parentElement.querySelector('#long'); 

     lat.innerHTML = position.coords.latitude; 
     long.innerHTML = position.coords.longitude; 
    }, 

    noLoc: function() { 
     alert('device has no GPS or access is denied.'); 
    } 
}; 

答えて

14

ラップ機能(位置){}以下のようにジオロケーションコールバック。次に、実際のコールバック関数に必要な数の引数を追加できます。

var app = { 

    getGeoLoc : function (id) { 

     var self = this; 

     navigator.geolocation.getCurrentPosition(function(position) { 

      var myVar1, myVar2, myVar3; // Define has many variables as you want here 

      // From here you can pass the position, as well as any other arguments 
      // you might need. 
      self.foundLoc(position, self, myVar1, myVar2, myVar3) 

     }, this.noloc, { timeout : 3}); 
    }, 

    foundLoc : function(position, self, myVar1, myVar2, myVar3) {}, 
}; 

これは、これを遭遇する可能性のある他の人に役立ちます。

+0

私はそれに遭遇し、それは確かに助けになりました。あなたのために+1 :) –