【问题标题】:Rails Google maps javascript api v3 setIcon() url can't locate imageRails Google maps javascript api v3 setIcon() url 找不到图片
【发布时间】:2015-03-14 04:07:38
【问题描述】:

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

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

但是当我试图让它在我的本地应用程序目录中找到图像时,它找不到图像(原来的标记图像消失了,但新的没有出现):

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

我已经尝试了所有可能的 url(app/assets/images/myMarker.png、/images/myMarker.png、assets/images/myMarker.png 等),并将图像放置在许多不同的位置,它还是不行。

如何让 javascript 找到我的 png??

【问题讨论】:

  • 你试过绝对url而不是相对url吗?
  • 那会是什么样子?我试过http://localhost:3000/app/assets/images/myMarker.png之类的东西但没有成功。

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


【解决方案1】:

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

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

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

HTML:

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

JS:

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

【讨论】:

    【解决方案2】:

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

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

    2) 在文件中添加 .erb 扩展名,并在引用图像时使用asset_url 获取正确的资源路径:marker.setIcon("");

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      相关资源
      最近更新 更多