2016-07-04 38 views
2

我是新来的铁轨,我想知道我能如何循环这些标记。我的JS变量“计数”不被识别,我需要一些帮助循环通过我的红宝石数组或需要另一种解决方案。使用嵌入式红宝石循环Google Maps标记?

function initMap() { 
      var mapDiv = document.getElementById('map'); 
      var map = new google.maps.Map(mapDiv, { 
       center: {lat: 44.540, lng: -78.546}, 
       zoom: 8 
      }); 

      var total = <%= mapcount %> 

      var javascriptcount = 0; 

      var count = 0; 

     <% arraylat = [] %> 
     <% arraylng = [] %> 

     <% mapposttotal.each do |q| %> 
      <% arraylat << q.lat %> 
      <% arraylng << q.lng %> 
     <% end %> 

      for (; javascriptcount <= total; javascriptcount++) { 
      var marker = new google.maps.Marker({ 
       position: {lat: <%= arraylat[count] %>, lng: <%= arraylng[count] %>}, 
       map: map, 
       title: 'Hello World!' 
      }); 
      count = count + 1; 
      console.log() 
      } 

     var Clicker = document.getElementById('PostIt'); 


     Clicker.addEventListener('click', function() { 
      window.location='/newpost.html';}, false); 

     } 


    <% end %> 
+0

混合erb代码和javascript是非常糟糕的。你最好通过ajax调用来获取标记信息(如果它们存储在数据库中),并将它们填充到“成功”响应中 – kasperite

回答

1

如你是新来的Rails,我可以建议此解决方案:

1.增加在MarkersController一个动作:

def index 
     respond_to do |format| 
     format.json do 
      markers = Marker.all.map do |marker| 
      { 
       lat: marker.lat, 
       lng: marker.lng 
      } 
      end 
      render json: markers 
     end 
     end 
    end 

2.In routes.rb

get "/markers", to: "markers#index" 

3.Javascript:

function initMap() { 
    $.getJSON("/markers", function(data) { 
    // All your js code to populate markers go in here. 
    }) 
} 

这基本上是应该如何工作的。只需量身定制代码以满足您的需求