我查看了Cordova Geolocation上的示例,我无法确定如何从其功能中返回位置,因此我可以从不同位置多次调用它。
以下是获取职位的示例:
var onSuccess = function (position) {
alert('Latitude: ' + position.coords.latitude + '\n' +
'Longitude: ' + position.coords.longitude + '\n' +
'Altitude: ' + position.coords.altitude + '\n' +
'Accuracy: ' + position.coords.accuracy + '\n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
'Heading: ' + position.coords.heading + '\n' +
'Speed: ' + position.coords.speed + '\n' +
'Timestamp: ' + position.timestamp + '\n');
};
function onError (error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
所以我希望能够调用一个函数并让它返回位置对象,它来自'onSuccess'
答案 0 :(得分:1)
您可能正在寻找bind:
var getPosition
function onSuccess(position){
getPosition = function(position){
// do somethin with the position object afterwards
}.bind(null, position);
}
// ... some code or some timeout after onSuccess function has been fired
if(getPosition)getPosition();
只是要明确上面的代码应该如何工作:
// simulate cordova-geolocation-onSuccess call
onSuccess({x:2,y:5});
setTimeout(function(){
if(getPosition)getPosition();
},2000);
希望这有帮助,我已正确理解你的问题。
注意: bind 可用于创建可在特定上下文(第一个参数)内执行的函数以及某些传递的参数值(第二个,第三个...参数)。
根据您的评论如下: 您还可以使用回调函数作为参数来实现此目的:
function getUserPosition(callback) {
function onSuccess(position) {
callback(position);
};
$cordovaGeolocation.getCurrentPosition(options).then(onSuccess);
};
getUserPosition(function(position){
// do something with position object here
});
但是当你想使用一个真正能够返回地理定位对象的函数时,你必须使用第一个答案。