我使用此代码计算两个gps位置之间的距离。问题是当我返回计算值时,它返回未定义的值。请帮帮我
function calcDistane(offerID,userLocation){
var dist;
var adapter = new LocationAdapter();
adapter.selectByOfferId(offerID,function(res){
navigator.geolocation.getCurrentPosition(function(position){
var R = 6371;
var userLocation= position.coords;
dist= Math.acos(Math.sin(userLocation.latitude)*Math.sin(res.item(0).lt) +
Math.cos(userLocation.latitude)*Math.cos(res.item(0).lt) *
Math.cos(userLocation.longitude-res.item(0).lg)) * R;
});
});
return dist;
};
答案 0 :(得分:2)
dist
尚未设定。设置dist的功能是回调。从外部(回调)函数返回后,很可能会调用它。
可能的执行顺序是
您需要传递延续而不是返回
function calcDistane(offerID,userLocation,callback){
var adapter = new LocationAdapter();
adapter.selectByOfferId(offerID,function(res){
navigator.geolocation.getCurrentPosition(function(position){
var R = 6371;
var userLocation= position.coords;
callback(Math.acos(Math.sin(userLocation.latitude)*Math.sin(res.item(0).lt) +
Math.cos(userLocation.latitude)*Math.cos(res.item(0).lt) *
Math.cos(userLocation.longitude-res.item(0).lg)) * R);
});
});
}