【问题标题】:How to show a moving object on google maps in ruby on rails?如何在 ruby​​ on rails 中显示谷歌地图上的移动物体?
【发布时间】:2014-10-16 18:40:15
【问题描述】:

我想在 ruby​​ on rails 的谷歌地图上显示带有移动标记/对象​​的路线?这样做的有效方法是什么?

【问题讨论】:

  • 您必须每隔几秒使用地理编码或使用一些 js 或通过其他选项获取对象的坐标,然后将坐标发送到 rails 应用程序并使用地理编码器显示它们。跨度>
  • 应该使用什么来获取坐标然后在地图上更新? 1个选项是设置几秒钟的时间并发送一个ajax请求。我想这将是一个非常繁重的过程。还有什么可以替代的?
  • 我假设您在移动时使用的是移动设备。您可以使用手机的 GPS 和网络来获取当前位置坐标。 HTML5 现在还为您提供坐标,因此您必须在视图中编写刷新逻辑并从控制器更新地图。我不确定 ajax 调用如何帮助获取坐标。
  • 我怀疑 rails 是这个特定用例的框架。有一些方法可以使 ruby​​ 成为多线程和事件驱动的,但这并不是它的用途。您用 node.js 标记了这个问题是有充分理由的,因为 javascript 驱动的控制器可以比 ruby​​ 驱动的控制器更好地处理您的需求。考虑为这件事改变你的框架。 :)
  • 可能是 jt-rails-address、rails 5 actioncable 和谷歌地图的组合。具有挑战性,但在正确输入的情况下应该可以工作。你已经设法让它工作了吗?

标签: ruby-on-rails node.js google-maps ruby-on-rails-4 ruby-on-rails-3.2


【解决方案1】:

您可以使用 Action Cable 将坐标广播到 UI,将它们保存在一些数据属性中并从地图脚本中轮询它们。

您可以按照以下步骤操作:

  • 创建一个新频道。让我们称之为“位置”:

    rails g channel locations

  • 在您收到最新坐标时广播它们:

    ActionCable.server.broadcast 'locations_channel', { latitude: 'NEW_LATITUDE', longitude: 'NEW_LONGITUDE' }

  • 在用户界面上收到最新坐标后,您可以将它们设置为地图div 的数据属性,如下所示: $('#map').data(data); 这部分的代码sn-p可以在this gist

  • 找到
  • 定期轮询地图div的数据属性,并更新标记的位置: marker.setPosition(latlng)

我写了a step by step guide on Medium on how to do this。你可以多看看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多