9

我添加了将谷歌地图加载到我的页面所需的 javascript:

<% content_for :head do %>

<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
    var mapOptions = {
        center: new google.maps.LatLng(<%=@lat%>, <%=@lon%>),
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);
}
</script>

<% end %>

如您所见,当我加载地图时,我需要传递参数纬度和经度。正如我在标题中所说,我想将这些 javascript 放入资产管道中,如果可以的话,有可能吗?谢谢

4

2 回答 2

13

您不应在资产管道生成的application.js文件中包含 Google Maps API。相反,它应该作为单独的标签包含<script>在您的标签之前application.js<script>

然后,您可以将您的initialize()方法添加到资产管道中包含的任何文件中,包括application.js它自己。

您可能希望为您的方法制作@lat@lon参数,initialize以便可以在您的页面中定义它们<head>。例如,您可能有

<head>
  <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=false"></script>
  <%= javascript_include_tag "application" %>

  <script>
    var latitude  = <%= @lat %>;
    var longitude = <%= @lon %>;
  </script>
</head>

在你的application.js文件中你可能有

function initialize(latitude, longitude) {
  var mapOptions = {
      center: new google.maps.LatLng(latitude, longitude),
      zoom: 5,
      mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map_canvas"),
      mapOptions);
}

$(function() {
  initialize(latitude, longitude);
});
于 2013-01-13T22:47:11.053 回答
0

这不能回答你的问题,但有一个谷歌地图宝石对我来说非常有用:https ://github.com/apneadiving/Google-Maps-for-Rails

于 2013-01-13T23:12:00.137 回答