在 javascript returns 中分配地图坐标未定义
Assigning map co ordinates in javascript returns undefined
(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
从你的问题中不清楚这些“其他”坐标来自哪里,它们是硬编码的,还是从 cookie 或 localStorage 加载的,但是这个例子获取坐标并保存它们到一个数组,然后保存到 localStorage,每当页面刷新时加载。
它对 return 地理定位搜索结果使用一种承诺,对主要功能使用一种异步方法。
注意:由于安全问题,这不会 运行 在一个片段中,但它已经过全面测试。
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();
(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
从你的问题中不清楚这些“其他”坐标来自哪里,它们是硬编码的,还是从 cookie 或 localStorage 加载的,但是这个例子获取坐标并保存它们到一个数组,然后保存到 localStorage,每当页面刷新时加载。
它对 return 地理定位搜索结果使用一种承诺,对主要功能使用一种异步方法。
注意:由于安全问题,这不会 运行 在一个片段中,但它已经过全面测试。
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();