Rails Google maps javascript api v3 setIcon()url无法定​​位图片

时间:2015-03-14 04:07:39

标签: javascript ruby-on-rails google-maps google-maps-api-3

我使用setIcon()方法在鼠标悬停页面上的元素时更改标记图像。当url是这样的时候它工作正常:

marker.setIcon('https://www.google.com/mapfiles/marker_green.png');

但是当我尝试在我的本地应用程序目录中查找图像时,它无法找到图像(原始标记图像消失但新图像不会出现):

marker.setIcon('images/myMarker.png');

我已尝试过所有可能的网址(app / assets / images / myMarker.png,/ images / myMarker.png,assets / images / myMarker.png等),并将图片放在许多不同的位置,它仍然无法运作。

如何让javascript找到我的png ??

2 个答案:

答案 0 :(得分:2)

假设它是一个资产管道错误,即marker_green.png在生产中变成marker_green-336339d13ed7edf253018e0f7f70bee2.png。以下是几个解决方案:

  1. 将marker_green.png文件放在公共目录中,例如公共/映射文件/ marker_green.png
    1. 在html元素上设置图像路径的数据属性,例如加载地图的div,并使用JS / jQuery获取。即:
    2. HTML:

      <div id="map" data-marker-url="<%= asset_url('marker_green.png') %>"></div>
      

      JS:

      var markerIcon = $("#map").data('marker-url');
      marker.setIcon(markerIcon);
      

答案 1 :(得分:1)

听起来这是rails资产管道的一个问题。您可以尝试以下几种方法:

1)忘记资产管道(不理想),并将标记移动到公共/图像。 marker.setIcon( '图像/ myMarker.png');应该工作。

2)将.erb扩展名添加到您的文件中,并在引用图片时使用asset_url获取正确的资产路径:marker.setIcon(“&lt;%= asset_url('marker_green.png')%&gt;” );

最好通读asset pipeline documentation来了解哪些内容适用于您的配置。