如何从 getCurrentPosition() 获取坐标

Posted

技术标签:

【中文标题】如何从 getCurrentPosition() 获取坐标【英文标题】:How to get coordinates from 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 数组以便它可以在代码中的其他地方使用 【参考方案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/…

以上是关于如何从 getCurrentPosition() 获取坐标的主要内容,如果未能解决你的问题,请参考以下文章

getCurrentPosition() 的结果

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

navigator.geolocation.getCurrentPosition() 没有从 googleapi 得到响应

geolocation.getCurrentPosition 如何返回值?

无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置

有人可以告诉我如何使用 getCurrentPosition 的 watch position () 函数吗?