我只是想从 HTML5 的 geolocation.getCurrentPosition 函数中获取变量。但是,我在函数外部定义变量时遇到了很多困难。
该函数使用以下代码工作:
<script>
var latitude;
var longitude;
var accuracy;
var altitude;
var altitudeAccuracy;
var heading;
var speed;
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(
function (position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
alert(longitude)
accuracy = position.coords.accuracy;
altitudeAccuracy = position.coords.altitudeAccuracy;
heading = position.coords.heading;
speed = position.coords.speed;
}
);
}
// alert(latitude);
在这里我看到 alert(longitude)
返回一个数值。但是,当我注释掉该行并取消注释 alert(latitude)
时——我收到“未定义”警报。
任何帮助将不胜感激!谢谢。
最佳答案
因为getCurrentPosition
是一个异步调用。
您需要等待回调触发,然后才能访问它检索的值。
function nextStep(){
alert(latitude);
}
navigator.geolocation.getCurrentPosition(
function (position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
alert(longitude)
accuracy = position.coords.accuracy;
altitudeAccuracy = position.coords.altitudeAccuracy;
heading = position.coords.heading;
speed = position.coords.speed;
nextStep();
}
);
关于Javascript 函数变量范围直通地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199768/