0

我的 ruby​​ 项目文件夹中有一个 scripts.js 文件 - assets/javascripts,我正在尝试在其中呈现谷歌地图。我无法让我的 javascript 理解嵌入的 ruby​​ 标签之间的代码。我该怎么做?我认为像在scripts.js页面顶部声明变量这样的东西会起作用,比如:

var map_latitude = <%= @user.lat %>;
var map_longitude = <%= @user.lng %>;

这是我的代码(问题在第 5 行):

var map;
  var markers = [];

  function initialize_google_maps() {
    var currentlatlng = new google.maps.LatLng(<%= @user.lat %>, <%= @user.lng %>);
    var zoom = <%= @kms_range %> > 9 ? 9 : 10;
    var myOptions = {
        zoom: zoom,
        center: currentlatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID
        streetViewControl: false
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var marker = new google.maps.Marker({map: map, position: currentlatlng, icon:{oppacity:0}});
    map.setCenter(currentlatlng);
    map.setZoom(zoom);

    var circle = new google.maps.Circle({
        map: map,
        fillOpacity: 0,
        strokeWeight: 2,
        strokeOpacity: 0.7,
        radius: <%= @kms_range %>*1000,
    });
    circle.bindTo('center', marker, 'position');

  }

  function show_markers() {
    if (markers)
      for(i in markers) {
        markers[i].setMap(map);
      }
  }

  function add_marker(location) {
    marker = new google.maps.Marker({
      position: location,
      map: map
    });
    markers.push(marker);
    // markers.setVisible(false);
  }

  function initialize_markers() {
    <% (@reviews || []).each do |r| %>
      <% next unless r.lat && r.lng %>
      position = new google.maps.LatLng(<%= r.lat %>, <%= r.lng %>);
      add_marker(position);
    <% end %>
  }

  $(function() {
    initialize_google_maps();
    initialize_markers();
    show_markers();
  });

如果有任何帮助,我将不胜感激,谢谢。

4

1 回答 1

0
var map_latitude = "<%= @user.lat %>";
var map_longitude = "<%= @user.lng %>";

查看生成的 javascript,您可能缺少引号。

另外,如果它是一个字符串,你可以这样做

var map_latitude = <%= p @user.lat %>;
var map_longitude = <%= p @user.lng %>;

但以前从未在代码中看到过这一点

于 2013-05-01T14:26:39.037 回答