地理定位仅在刷新后有效
Geolocation only works after refresh
让我给你一些关于这个项目的信息。我的项目的目标是编写一个应用程序,找到最近的火车站到用户(使用HTML5地理定位)。
问题是:我在屏幕上打印位置的函数不等待地理位置在sessionStorage中。我知道这必须通过回调来解决,但我不知道如何…
相关代码如下:
window.onload = function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
alert("Geolocation werkt niet bij jou, sorry.");
}
}
function showPosition(position)
{
sessionStorage.setItem("userLat", position.coords.latitude);
sessionStorage.setItem("userLong", position.coords.longitude);
}
function cb(data)
{
var uLat = sessionStorage.getItem("userLat");
var uLong = sessionStorage.getItem("userLong");
var gegevens = data.Stations;
var result = Number.MAX_VALUE;
var nearIndex;
for (var i = 0; i < gegevens.length; i++)
{
var prev = haversine(uLat,gegevens[i].latitude,uLong,gegevens[i].longitude);
if (prev < result)
{
result = prev;
nearIndex = i;
}
}
var x = document.getElementById("dbStation");
x.innerHTML = "Je dichtsbijzijnde station is : " + gegevens[nearIndex].name;
}
数据通过以下代码从外部JSON文件导入:
<script type="text/javascript" src="http://data.irail.be/NMBS/Stations.json?callback=cb"></script>
一种方法是在回调之前调用将位置设置为sessionStorage的函数,如:
function setSessionStorage() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
return true;
} else {
alert("Geolocation werkt niet bij jou, sorry.");
return false;
}
}
//add the script
var oHead = document.getElementById('add');
var oScript = document.createElement('script');
oScript.type = 'text/javascript';
oScript.src = 'http://data.irail.be/NMBS/Stations.json?callback=cb';
oHead.appendChild(oScript);
oScript.onreadystatechange = function() {
if (this.readyState == 'complete') {
if( setSessionStorage() ) {
cb(); //your callback
}
}
}
相关文章:
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 如何解决Yii中的页面刷新问题
- 如何有效地将游戏数据存储在URL查询字符串中
- Jquery提交表单而不刷新
- 如何使用Node.js最有效地解析网页
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 刷新页面后会出现警报
- 使用一堆 setTimeouts 还是一个 setInterval 来刷新一堆对象更有效
- 从 CRM 4 中的模式对话框刷新父窗体 - 并不总是有效
- 进度条.js仅在页面刷新后有效
- ng类条件有效,但仅当我刷新页面时有效
- 导航到页面,scrollTop()总是有效的.刷新页面时,scrollTop()永远不起作用
- 更新/刷新JQuery移动滑块有效
- 地理定位仅在刷新后有效
- $scope值在控制器中没有更新,只有当我按刷新时才有效
- 用jQuery设置高度忽略初始加载时的内容,但在刷新后有效
- 如果高度大于宽度,则为动态图像添加类,但仅在刷新页面时有效
- 为什么我的 Rails AJAX 删除方法只有在刷新时才有效
- Tampermonkey脚本仅在页面刷新后有效