首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过地理编码和地图绘图跟踪轨道上的车辆

通过地理编码和地图绘图跟踪轨道上的车辆
EN

Stack Overflow用户
提问于 2014-09-23 22:08:33
回答 1查看 3K关注 0票数 4

我有一个Rails 3.2.19应用程序,我想跟踪车辆(单位)使用地理编码和绘图的谷歌地图。

我想出了一种获取坐标的方法,方法是使用taip_parser gem并创建一个rake任务,该任务不断侦听入站taip数据,解析纬度和经度,并更新车辆模型的latitudelongitude字段。在那里,我能够用gmaps4rails宝石绘制车辆位置。它的局限性在于,您必须使用使用TAIP语言的特定3G/4G调制解调器将lat/long发送到Rails服务器,以便rake任务能够解析它。

我想要做的是,不要使用这些昂贵的3G/4G调制解调器,而是从车辆中的移动设备(目前是iPad)中提取坐标。

因此,我的想法是使用浏览器中的HTML5地理定位功能获取单元的纬度和经度,并将其存储到当前通过Ajax进行的页面/部分刷新时单元的纬度/经度数据库字段中。

这将打破对现有设备的依赖,并允许任何启用GPS的移动设备与此功能兼容。

目前,在我的应用程序中,我有gmaps4rails来绘制单元,使用我的rake任务和taip数据解析,以及我正在测试的geocoder,因为它们是为另一个目的创建的。

我的问题是:

有人能提供如何在rails视图中使用HTML5地理定位功能的示例吗?在视图中启用HTML5地理定位之后,如何将纬度和经度分别输入到相应的模型纬度和经度字段中?可能是使用gmaps4rails对多个对象的经度进行迭代的例子

如果我的问题太模糊或复杂,请让我知道,这样我就可以编辑它,使事情更清楚,我想做什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-30 12:23:33

通过在我的Rails应用程序中使用一些ajax和自定义控制器操作,我就能够做到这一点。使用Ajax和一个隐藏的表单,我使用HTML5提取坐标,用值填充表单,并提交到ajax。

守则见下文:

控制器

代码语言:javascript
复制
  def update_gps
    @unit = current_user.unit
    if @unit.update_attributes(params[:unit])
      respond_to do |format|
        format.html {redirect_to mdt_path}
        format.js { render "index"}
      end
    end
  end

index.html.erb

代码语言:javascript
复制
 <div class="hidden">
    <%= form_for(@unit, :url => update_gps_mdt_index_path, :html => {:method => :post}) do |f| %>
    <%= f.text_field :latitude %>
    <%= f.text_field :longitude %>
    <%= f.button :submit %>
    <% end %>
    </div>
    <script>
      $(function() {
        setInterval(function(){
          $.getScript("/mdt");
        }, 10000);
      });

    function updateCurrentLocation(){
      navigator.geolocation.getCurrentPosition(function(position) {
      var c = position.coords
      var location = c.latitude +", "+ c.longitude
      console.log(location)
      var $updateLocationForm = $(".edit_unit")
      $("#unit_latitude").val(c.latitude)
      $("#unit_longitude").val( c.longitude)
      var data = $(".edit_unit").serialize();
    console.log(data)
    $.ajax({
    type: "POST",
    url: $(".edit_unit").attr("action"),
    data: data,
    success: function(data) {
    console.log('working: '+data);
    },
    error: function(msg) {
    console.log('not working '+msg);
    }
    });
    });
    }
    setInterval(updateCurrentLocation, 10000)
    </script>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26005477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档