我使用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 ??
答案 0 :(得分:2)
假设它是一个资产管道错误,即marker_green.png
在生产中变成marker_green-336339d13ed7edf253018e0f7f70bee2.png
。以下是几个解决方案:
或
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来了解哪些内容适用于您的配置。