ruby-on-rails - Google Maps 和 Rails - 如何从 Ruby 模型构建位置数据

标签 ruby-on-rails ruby google-maps google-maps-api-3 ruby-on-rails-4

我正在尝试在没有 gmaps4rails gem 的情况下使用 Google Maps API。

这是一个普通的应用程序,其中模型的每个实例都是一个标记,我希望每个标记都有自己的信息窗口。

这部分代码存在问题:

var locations = [];
<% @listings.each do |l| %>
  locations.push([<%=raw l.latitude%>, <%=raw l.longitude %>]);
<% end %>

代码按原样工作,但是当我尝试调用不是数字的第三个对象(例如 <%=raw l.title %> )时, map 根本不会加载。此外,Ruby 中的任何文本都不会加载 - 比如 <%=raw "text" %><%= "text" %>同时 <%= 2 %>确实有效。

我怎样才能超越这个问题并调用 ruby​​ 模型来构建一个信息窗口?是JSON吗?如果是这样,我会使用它吗?

提前致谢, 蒂亚戈

部分 map :

<script type="text/javascript">

      function initialize() {
        var mapOptions = {
          center: new google.maps.LatLng(1.3, 103.85),
          zoom: 12,
          disableDefaultUI: true,
          zoomControl:true
        };

        var locations = [];
        <% @listings.each do |l| %>
           locations.push([<%=raw l.latitude%>, <%=raw l.longitude %>]);
        <% end %>

        var map = new google.maps.Map(document.getElementById("index-map-canvas"),
            mapOptions);

        var infowindow = new google.maps.InfoWindow();      

        var marker, i;

        for (i = 0; i < locations.length; i++) {  
          marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][0], locations[i][1]),
            map: map
          });


          google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
              infowindow.setContent("<div>"+locations[i][2]+"</div>");
              infowindow.open(map, marker);
            }
          })(marker, i));

        };

      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>

Controller :

def index
    @q = Listing.search(params[:q])
    @listings = @q.result(distinct: true).paginate(:page => params[:page], :per_page => 10)
  end

最佳答案

替换:

    var locations = [];
    <% @listings.each do |l| %>
       locations.push([<%=raw l.latitude%>, <%=raw l.longitude %>]);
    <% end %>

与:

    var locations = <%= raw @listings.to_json %>;

关于ruby-on-rails - Google Maps 和 Rails - 如何从 Ruby 模型构建位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923424/

相关文章:

ruby-on-rails - 我们如何通过另一个应用程序(都在同一服务器上运行)运行一个应用程序的 rake 任务?

javascript - Google map 信息框 - 只需点击即可显示

java - Android Maps API 版本 1 到版本 2 的迁移

ruby-on-rails - Rails 根据集合大小多次渲染部分

ruby - 从 Ruby 中杀死进程组会杀死我的整台计算机

ruby - 如何手动构建 AST?

ios - 在 iOS 应用程序上使用 Google map (应用程序评论)

ruby-on-rails - Rails 生成 Controller aws 错误缺少存储桶名称

ruby-on-rails - 如何在 Rails 的特定时区安排工作人员的时间?

ruby-on-rails - 如何使用外部 Controller 创建新的设计用户