将参数传递给JavaScript和Rails

tho*_*nch 5 javascript google-maps ruby-on-rails

在我的Rails应用程序中,我有一个帮助方法location,它获取给定IP地址的坐标,并使它们可用于所有控制器和视图.例如,location.latitude返回用户的纬度.你明白了.

我还有一些Javascript可以根据给定的纬度/经度对从Google Maps API中绘制地图.问题是我不知道如何将locationparams 传递给JavaScript!

JavaScript位于'application.js'中,如下所示:

$(document).ready(function() 
  { 

    //Map options...I want the params to go into the var 'MapOptions' below

    function initialize() {
      var mapOptions = {
        center: new google.maps.LatLng(40.764698,-73.978972),
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
        };

    //Setup and Draw the Map...
    //....................................
  };
Run Code Online (Sandbox Code Playgroud)

地图本身就像在HTML中一样被调用.通过params没有明显的方法.

<div id="map_canvas">
  <!-- The Map gets drawn here! -->
</div>
Run Code Online (Sandbox Code Playgroud)

我知道这可能是一个显而易见的问题,但我以前从未将这个参数从我的应用程序传递给Javascript.

Joe*_*ele 8

我认为数据属性在这里运作良好.

HTML

<div id="map_canvas" data-latitude="40.764698" data-longitude="-73.978972">
  <!-- The Map gets drawn here! -->
</div>
Run Code Online (Sandbox Code Playgroud)

或与你的助手

<div id="map_canvas" data-latitude="<%= location.latitude %>" data-longitude="<%= location.longitude %>">
  <!-- The Map gets drawn here! -->
</div>
Run Code Online (Sandbox Code Playgroud)

JS

$(document).ready(function() { 

  //Map options...I want the params to go into the var 'MapOptions' below

  function initialize() {
    var mapDiv = $('#map_canvas');
    var lat = mapDiv.data('latitude'),
        lng = mapDiv.data('longitude');

    var mapOptions = {
      center: new google.maps.LatLng(lat,lng),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

  //Setup and Draw the Map...
  //....................................
};
Run Code Online (Sandbox Code Playgroud)

  • +1可以为您提供书面答案和您的姓氏。;) (2认同)