【问题标题】:Assigning map co ordinates in javascript returns undefined在javascript中分配地图坐标返回未定义
【发布时间】:2021-10-23 11:28:59
【问题描述】:
(async ( ) =>  {
    async function foo() {
        navigator.geolocation.getCurrentPosition(success, error, options)
        {
            var options = {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
            };
            
            function success(pos) {
            var crd = pos.coords;
            console.log('Your current position is:');
            console.log(`Latitude : ${crd.latitude}`);
            lat = crd.latitude;
            console.log(`Longitude: ${crd.longitude}`);
            long = crd.longitude;
            console.log(`More or less ${crd.accuracy} meters.`);
            return [lat, long];
            }
            
            function error(err) {
            console.warn(`ERROR(${err.code}): ${err.message}`);
            }
        };
    };
})
    

let result = await foo();
console.log(result);

 x = await result[1]
    console.log(x);

我试图从浏览器中获取地图坐标并将它们分配给变量,以便与其他坐标进行比较并找到与某个地方的接近度。 但它一直返回un

【问题讨论】:

标签: javascript arrays maps


【解决方案1】:

从您的问题中不清楚这些“其他”坐标来自何处,它们是硬编码的,还是从 cookie 或 localStorage 加载的,但此示例获取坐标并将它们保存到然后将数组保存到 localStorage 中,该数组在页面刷新时加载。

它使用一个 promise 来返回地理位置搜索的结果,以及一个用于 main 函数的异步方法。

注意:由于安全问题,这不会在 sn-p 中运行,但已经过全面测试。

const posArr = JSON.parse(localStorage.getItem('pos')) || [];

function getPos(options)  {
  return new Promise((res, rej) => {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(
        (pos) => res(pos),
        (err) => rej(logError(err)),
        options
      );
    }
  });
}

function logPos(data) {
  const { accuracy, latitude, longitude } = data.coords;
  console.log('Your current position is:');
  console.log(`Latitude : ${latitude}`);
  console.log(`Longitude: ${longitude}`);
  console.log(`More or less ${accuracy} meters.`);
  posArr.push({ accuracy, latitude, longitude });
  localStorage.setItem('pos', JSON.stringify(posArr));
}

function logError(err) {
  const { code, message } = err;
  console.error(`Error code ${code}: ${message}`);
}

const options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0
};

async function main(options) {
  try {
    const response = await getPos(options);
    if (response) {
      logPos(response);
      console.log(posArr);
    }
  } catch (err) {
    console.log('Position not available.');
  }
}

main();

【讨论】:

  • 非常感谢,我会将其他坐标硬编码到另一组数组中。
猜你喜欢
  • 2018-05-15
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多