Ruby on Rails,用户可以设置他们的位置

Posted

技术标签:

【中文标题】Ruby on Rails,用户可以设置他们的位置【英文标题】:Ruby on Rails, users can set their location 【发布时间】:2015-07-19 19:52:58 【问题描述】:

所以我正在使用 Ruby on Rails 开发一个 Web 应用程序,并且我想找到一种方法,让用户在创建他的帐户时可以设置他的位置。我正在考虑类似 google maps API for rails 之类的东西,用户可以在其中选择他的居住地。

如果有人对此有任何建议,我将不胜感激!

【问题讨论】:

【参考方案1】:

有一个很好的SlideShare 谈论在您的rails 应用程序中启用地理定位。您可以轻松获取用户的位置并使用 javascript 将其设置为默认位置。

假设您想获取用户的当前位置并将其显示在您的视图中: 首先包含相应的 google maps api js 库:

<script src="https://maps.googleapis.com/maps/api/js"></script>

观看次数/索引

<body>

  <div class="container">

    <div class="error-message">
    </div>

    <div class="jumbotron">
      <h1>Google Maps</h1>
    </div>

    <div class="location">
      <div class="loc longitude">
        <h3>Longitude</h3>
        <p id="longitude"><i class="fa fa-spinner fa-spin"></i></p>
      </div>
      <div class="loc latitude">
        <h3>Latitude</h3>
        <p id="latitude"><i class="fa fa-spinner fa-spin"></i></p>
      </div>
    </div>

    <div class="row">
      <div class="col-md-12 google-map-container">
        <div id="google-map">
          <h3>Map</h3>
          <div id="map_canvas">
            <div class="  ">
              <i class="fa fa-spinner fa-spin fa-5x"></i>
            </div>
          </div>
        </div>
      </div>
    </div>

  </div> <!-- /container -->

</html>

现在假设您有两个 js 文件,一个获取用户经度和纬度,另一个根据用户位置创建和插入地图

fetch_location.js

$(document).ready(function()
    var x = document.getElementById("latitude");
    var y = document.getElementById("longitude");
    // $('.vertical-align').hide();
  function getLocation() 
        navigator.geolocation.getCurrentPosition(function(position)
            x.innerHTML =  position.coords.latitude.toFixed(4);
            y.innerHTML = position.coords.longitude.toFixed(4);

            insertMap(latitude,longitude);
        );

  

  getLocation();
);

然后在 inser_map.js

function insertMap(latitude, longitude) 

$('#map_canvas').html(initialize(latitude,longitude));

    function initialize(latitude,longitude)
   var mapCanvas = document.getElementById('map_canvas');
    var mapOptions = 
      center: new google.maps.LatLng(latitude,longitude),
      zoom: 8,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    
    var map = new google.maps.Map(mapCanvas, mapOptions);
    google.maps.event.addDomListener(window, 'load', initialize);
  

insertMap 函数将使用地图和用户位置的 pin 填充 id map_canvas 的 div。

然后您可以使用此信息将用户的位置保存到数据库中。

【讨论】:

太棒了,谢谢!我发现这个对我也有帮助的小教程:binarapps.com/blog/integration-of-googlemaps-in-rails-4

以上是关于Ruby on Rails,用户可以设置他们的位置的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 与 Wordpress 的集成

通过单击 Ruby on Rails 中的按钮生成表单

是否可以在 ruby​​ on rails 中对关联进行分组?

Ruby on rails 协会 - 用户(设计)在注册和登录后可以“创建团队”或“加入团队”

用于 ruby​​ on rails 的 Mahout 插件

如何配置 Devise for Ruby on Rails 以将电子邮件和密码存储在用户模型之外的其他位置?