将 JS getCurrentPosition 传递给全局变量

Posted

技术标签:

【中文标题】将 JS getCurrentPosition 传递给全局变量【英文标题】:Passing JS getCurrentPosition to global variable 【发布时间】:2020-05-16 16:48:58 【问题描述】:

我正在构建一个需要用户位置的应用程序,为此我正在使用:

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`);
    console.log(`Longitude: $crd.longitude`);
    console.log(`More or less $crd.accuracy meters.`);
    console.log(` $crd.longitude`);
 

function error(err) 
    console.warn(`ERROR($err.code): $err.message`);
    console.log(`Latitude : 9`);


navigator.geolocation.getCurrentPosition(success, error, options);

如何将用户纬度和经度传递给全局变量?

【问题讨论】:

【参考方案1】:

您可以使用本地存储来优化解决方案。

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`);
    console.log(`Longitude: $crd.longitude`);
    console.log(`More or less $crd.accuracy meters.`);
    let userLatitude = crd.latitude;
    let userLongitude = crd.longitude;
    localStorage.setItem("USER_LATITUDE", userLatitude);
    localStorage.setItem("USER_LONGITUDE", userLongitude);
    console.log(` $crd.longitude`);
 

function error(err) 
    console.warn(`ERROR($err.code): $err.message`);
    console.log(`Latitude : 9`);


navigator.geolocation.getCurrentPosition(success, error, options);

如果你想使用这个位置数据;

var latitude = localStorage.getItem('USER_LATITUDE');
var longitude = localStorage.getItem('USER_LONGITUDE');

【讨论】:

【参考方案2】:

全局声明变量并在回调中分配它们...(全局变量不是好习惯)

window.userLat = null;
window.userLng = null;

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`);
  console.log(`Longitude: $crd.longitude`);
  console.log(`More or less $crd.accuracy meters.`);
  console.log(` $crd.longitude`);
  userLat = crd.latitude;
  userLng = crd.longitude;


function error(err) 
  console.warn(`ERROR($err.code): $err.message`);
  console.log(`Latitude : 9`);


navigator.geolocation.getCurrentPosition(success, error, options);

【讨论】:

感谢@Argee 重播。我尝试了 sn-p 但全局变量返回 null。再次感谢。

以上是关于将 JS getCurrentPosition 传递给全局变量的主要内容,如果未能解决你的问题,请参考以下文章

navigator.geolocation.getCurrentPosition() 不起作用

无法在 Flask 本地主机应用程序中使用 getCurrentPosition()

getCurrentPosition() 的结果

geolocation.getCurrentPosition 在晚上失败——如何提供自己的 api 密钥?

当用户选择“不再询问”并禁用地理定位时,React native `Geolocation.getCurrentPosition` 承诺将永远不会被解决/拒绝

getCurrentPosition() 是不是使用 GPS 导航?