1

我有一个简单的 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。基于这些坐标,它们用于从我的控制器中的数据库中检索一组特定的数据。然后这些结果会显示在视图中。

当前,当用户第一次到达站点时,页面是空白的,当页面刷新时,位置信息会通过控制器并显示相应的数据。

我要做的是在初始页面加载时完成地理定位和控制器操作,以便在用户首次到达站点时显示数据。或者更简单地说:

  1. 获取用户位置坐标
  2. 将坐标传递给控制器​​并检索数据
  3. 然后在视图中显示数据

我认为我的问题的根源是 javascript 和控制器事件的​​顺序,但我不知道如何解决这个问题。

4

1 回答 1

1

由于 javascript 在浏览器中运行并且页面在服务器端呈现,因此您需要重新加载整个页面或在showPosition. 否则,坐标将始终落后一步:如果您移动到另一个位置,cookie 中的坐标将来自上一个位置,而不是当前位置。

于 2013-10-30T20:24:10.750 回答