在javascript中分配地图坐标返回未定义
Posted
技术标签:
【中文标题】在javascript中分配地图坐标返回未定义【英文标题】:Assigning map co ordinates in javascript returns undefined 【发布时间】: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
【问题讨论】:
您的代码创建了一个async =>
函数,但它没有调用它。
为什么options
、success
和error
被包裹在一个块中?
How to return the response from an asynchronous call
foo
不返回任何内容
How do I convert an existing callback API to promises? 和 How to implement promises with the html5 Geolocation API?
【参考方案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();
【讨论】:
非常感谢,我会将其他坐标硬编码到另一组数组中。以上是关于在javascript中分配地图坐标返回未定义的主要内容,如果未能解决你的问题,请参考以下文章