Rails Google maps javascript api v3 setIcon() url 無法定位圖片

Rails Google maps javascript api v3 setIcon() url can't locate image

本文关键字:url 定位 maps Google javascript api setIcon v3 Rails      更新时间:2023-09-26

我正在使用setIcon()方法在页面上的元素上鼠标悬停时更改标记图像。当网址如下所示时,它可以正常工作:

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?

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

  1. 将marker_green.png文件放在公共目录中,例如 public/mapfiles/marker_green.png

  1. 在 html 元素上为图像路径设置一个数据属性,例如加载地图的div 并使用 JS/jQuery 获取。 即:

.HTML:

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

.JS:

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

听起来这是 rails 资产管道的问题。 您可以尝试以下几个选项:

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

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

最好

通读资产管道文档,以确定哪些内容适用于您的配置。