Видимо, на неделе гугл отключил svn репозитории code.google.com.
Если вы не подключали скрипты, раздаваемые из этих репозиториев, вы могли этого не заметить, как и я.
Меня удивил увеличившийся трафик в репозиторий google-maps-utility-library-v3, но сначала я не понял, почему это может быть. Позже я увидел, что пропали изображения иконок кластеров на карте. Дело в том, что путь до иконок захардкожен в MarkerClusterer и указывает на code.google.com.
Как настроить sprockets раздавать эти картинки, читайте под катом.
Сначала настроим рельсы, подразумевая что у нас уже есть копия google-maps-utility-library-v3 в репозитории. Если у вас её нет, как её можно сделать, будет написано ниже.
Добавьте путь до google-maps-utility-library-v3 в пайплайн (скорее всего, вы это уже сделали):
# config/initializer/assets.rb
Rails.application.config.assets.paths += %W(
#{Rails.root}/vendor/assets/google-maps-utility-library-v3
)
Теперь скажем sprockets, что мы хотим, чтобы он собрал картинки из библиотеки:
# config/initializer/assets.rb
Rails.application.config.assets.precompile += %w(
markerclustererplus/images/*.png
)
Настроим MarkerClusterer использовать наши картинки. Нужно изменить расширение файла с (UPD. Спасибо DeKaNszn за идею).js.coffe
на .js.coffee.erb
. Мы не будем хардкодить имя хоста, так в девелопменте будут использоваться локальные картинки, и не нужно будет загружать их с продакшн-сайта.
#= require markerclustererplus/src/markerclusterer_packed.js
#= require infobox/src/infobox_packed.js
# ... require anything you want
MarkerClusterer.IMAGE_PATH = '/assets/markerclustererplus/images/m'
# Это было исправлено с подсказки в комментариях
# MarkerClusterer.IMAGE_PATH = <%= (Rails.application.routes.url_helpers.root_url +
# 'assets/markerclustererplus/images/m').to_json %>
На этом всё. Далее о том, как добавить google-maps-utility-library в ваш репозиторий.
Я использую git подмодули:
git submodule add https://github.com/printercu/google-maps-utility-library-v3-read-only.git vendor/assets/google-maps-utility-library-v3
Не забудьте настроить деплой. Добавьте после чекаута:
git submodule init
git submodule sync
git submodule update — init
Теперь всё готово к выкатке.
Вы также можете поискать bower-пакеты или добавить библиотеку в репозиторий целиком, если не хотите использовать подмодули.
DeKaNszn
gist.github.com/DeKaN/b4794b1ddf0488da805900e7feae21de
Положить картинки m1,m2 и т.д. в /static/img/markers/
И можно использовать дальше ту же версию библиотеки
printercu
Что-то я сразу не подумал, про пути без хоста до картинок. Спасибо!
Вы markerclustererplus или markerclusterer используете? Для 2-го вроде должна работать опция
MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = '/assets/img/markers/m'
Статику копировать и коммитить в
public
я не хотел, раз она уже есть в репозитории.DeKaNszn
используется MarkerClusterer.
с версией отсюда: https://github.com/googlemaps/js-marker-clusterer/
printercu
https://github.com/googlemaps/js-marker-clusterer/blob/gh-pages/src/markerclusterer.js#L190
По-умолчанию всё ещё с гуглкода раздаётся :)
DeKaNszn
да, но если внимательно посмотреть код, то в начале проверяется заполнен ли styles при инициализации.
это позволяет без проблем использовать инициализацию как в gist
printercu
Сложнее же получается, нет?