我有一个简单的rails应用程序,可以在到达网站时对用户进行地理定位(此代码位于我的application.html.erb文件的head标记中):
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
var lat = position.coords.latitude;
var log = position.coords.longitude;
document.cookie = "cl=" + lat + "&" + log + ";";
}
getLocation()
</script>
<p id="demo"></p>
坐标保存为cookie。基于这些坐标,它们用于从控制器中的DB检索特定数据集。然后,这些结果将显示在视图中。
当用户第一次到达该站点时,页面为空白,当刷新页面时,位置信息通过控制器并显示相应的数据。
我要做的是在初始页面加载时完成地理位置和控制器操作,以便在用户第一次到达站点时显示数据。或者更简单:
我认为我的问题的根源是javascript和控制器事件的排序,但我不知道如何解决这个问题。
答案 0 :(得分:1)
由于javascript在浏览器中运行并且页面在服务器端呈现,因此您需要重新加载整个页面或在showPosition
中执行一些ajax更新。否则,坐标总是落后一步:如果你移动到另一个位置,cookie中的坐标将来自最后一个位置,而不是当前位置。