GPS 坐标未存储在我的变量中

GPS coordinates are not stored in my variables

在 for 循环中对所有位置执行 calcCrow 时,以下代码似乎没有使用位置数据。当我使用 Chrome 调试器检查它并逐步执行时,代码在代码执行完成之前从未真正获取坐标。

var locationsOfInterest = [];
var currentlat= 0;
var currentlong= 0;
x = navigator.geolocation;
x.getCurrentPosition(getposition);
function getposition(position){

    currentlat = position.coords.latitude;
    currentlong = position.coords.longitude;

};
var sunwayuni = {

    title: "Sunway University",
    latitude: 3.0681,
    longitude: 101.6041,
}

var monashaustralia = {

    title: "Monash Australia",
    latitude: -37.876823,
    longitude: 145.045837,
}

var kualalumpur = {

    title: "Kuala Lumpur",
    latitude: 3.1390,
    longitude: 101.6869,
}
locationsOfInterest= [sunwayuni, monashaustralia, kualalumpur]

for (var i = 0; i < locationsOfInterest.length; i++){

    locationsOfInterest[i].distance = calcCrow(locationsOfInterest[i].latitude, locationsOfInterest[i].longitude);
}

function calcCrow(lat2, lon2) 
    {
      var R = 6371; // km
      var drLat = toRad(lat2-currentlat);
      var drLon = toRad(lon2-currentlong);
      var rlat1 = toRad(currentlat);
      var rlat2 = toRad(lat2);

      var a = Math.sin(drLat/2) * Math.sin(drLat/2) +
        Math.sin(drLon/2) * Math.sin(drLon/2) * Math.cos(rlat1) * Math.cos(rlat2); 
      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
      var d = R * c;
      return d;
    }

    // Converts numeric degrees to radians
    function toRad(Value) 
    {
        return Value * Math.PI / 180;
    }

Html5 getcurrentposition 函数异步工作,因此所有处理都在 getcurrentposition 函数中进行。

var locationsOfInterest = [];变种currentlat = 0;变种currentlong = 0; x = navigator.geolocation; x.getCurrentPosition(获取位置);函数 getposition(position){ currentlat = position.coords.latitude; currentlong = position.coords.longitude;

var sunwayuni = { 标题:"Sunway University",纬度:3.0681,经度:101.6041,} var monashaustralia = { 标题:"Monash Australia",纬度:-37.876823,经度:145.045837,} var kualalumpur = { 标题:"Kuala Lumpur",纬度:3.1390,经度:101.6869,} locationsOfInterest= [sunwayuni, monashaustralia, kualalumpur] for (var i = 0; i < locationsOfInterest.length; i++){ locationsOfInterest[i] .distance = calcCrow(locationsOfInterest[i].latitude, locationsOfInterest[i].longitude); } 函数 calcCrow(lat2, lon2) { var R = 6371; // km var drLat = toRad(lat2-currentlat); var drLon = toRad(lon2-currentrong); var rlat1 = toRad(currentlat); var rlat2 = toRad(lat2); var a = Math.sin(drLat/2) * Math.sin(drLat/2) + Math.sin(drLon/2) * Math.sin(drLon/2) * Math.cos(rlat1) * Math.cos(rlat2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; returnd; } // 将数值度数转换为弧度 function toRad(Value) { return Value * Math.PI / 180; } };