【问题标题】:How to get coordinates from getCurrentPosition()如何从 getCurrentPosition() 获取坐标
【发布时间】:2018-07-03 19:57:34
【问题描述】:

我想从getCurrentPosition() 方法中获取坐标,以便在其他方法中使用它,但我做不到。

这是我的 HTML

<div id="map"></div>

这是我的 JavaScript 代码

var x = document.getElementById("map");

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  var a = position.coords.latitude;
  var b = position.coords.longitude;

  pos = {a, b}
  console.log(pos);
}
getLocation();

我想通过showPosition() 方法以某种方式访问​​pos 变量。有什么办法可以做到吗?或者如果我不能,有没有其他方法可以解决我的问题?请帮帮我。

【问题讨论】:

  • 有什么问题?错误是什么?
  • @Pop-A-Stash 虽然 console.log() 显示数组 pos 但我想返回该 pos 数组以便它可以在代码中的其他地方使用

标签: javascript html geolocation gps maps


【解决方案1】:

您应该能够在全局范围内简单地定义pos,并且在您需要的任何地方都可以访问它。您在 showPosition 内部定义 pos 的方式也有问题

var x = document.getElementById("map");
var pos;

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
    else { 
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}

function showPosition(position) {


    var a = position.coords.latitude;
    var b = position.coords.longitude;

    pos = [
        a,
        b
    ];

    console.log(pos);

}
getLocation();

【讨论】:

  • 根据您建议的更改,console.log(pos) 在 showPosition() 方法的范围内成功执行,但即使 pos 是全局声明的,也无法在范围外执行
  • 你在说什么范围?您还没有举例说明您打算如何使用pos 变量?
  • getCurrentPosition 在现代浏览器中不需要 2 个参数;它只需要 1 个回调函数。另请注意,它是一个异步函数,因此必须在回调中调用任何额外的逻辑。 developer.mozilla.org/en-US/docs/Web/API/Geolocation/…
猜你喜欢
  • 2021-12-26
  • 2015-08-24
  • 2020-06-15
  • 2021-10-22
  • 2015-08-01
  • 2021-11-24
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多