2016-05-12 45 views
0

我正在使用谷歌地圖的應用程序工作。我試圖讓用戶能夠長按某個位置併爲該位置顯示一個標記,然後在該標記infowindow中會有方向鏈接(下一次迭代),並將該位置添加爲已保存的區域,即I目前正在努力。我的代碼從谷歌地圖通過LatLng點擊事件軌道控制器

google.maps.event.addListener(map, 'mousedown', function(event){ 

     var counter=setInterval(timer, 1000); 
     var latLng=event.latLng; 
     var contentString= '<%= link_to "Add Parking Area", free_parking_areas_path(latLng), method: :post, id: "pass_latLng"%>' 
     var infowindow = new google.maps.InfoWindow({ 
     content: contentString 
     }); 

     google.maps.event.addListener(map, 'mouseup', function(event){ 
      clearInterval(counter); 
     }); 

     function timer(){ 
     count=count-1; 
     if (count <= 0) 
     { 
      var marker = new google.maps.Marker({ 
       position: latLng, 
       map: map, 
       title: "Unsaved Marker" 
      }); 

      marker.addListener("click", function(){ 
       infowindow.open(map, marker); 
      }); 
      return; 
     } 
     } 
    }); 

但只是拋出一個錯誤ActionView::Template::Error (undefined local variable or method 'latLng' for #<#<Class:0x007fdee654f688>:0x007fdeeb1f16d0>):。任何想法如何我可以將該變量傳遞給我的控制器?

回答

0

欄杆link_to幫助程序在JavaScript執行前很久就已經呈現,因此當link_to幫助程序生成html鏈接時,javascript latlng變量將永遠不會被設置。

你要麼需要手動設置鏈接的JS或使用外部源像任一(或其他):

將您的服務器端數據/路由公開到客戶端網站。

希望有幫助!