Видимо, на неделе гугл отключил 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 использовать наши картинки. Нужно изменить расширение файла с .js.coffe на .js.coffee.erb. Мы не будем хардкодить имя хоста, так в девелопменте будут использоваться локальные картинки, и не нужно будет загружать их с продакшн-сайта. (UPD. Спасибо DeKaNszn за идею)


#= 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-пакеты или добавить библиотеку в репозиторий целиком, если не хотите использовать подмодули.

Поделиться с друзьями
-->

Комментарии (6)


  1. DeKaNszn
    15.05.2016 08:22

    gist.github.com/DeKaN/b4794b1ddf0488da805900e7feae21de

    Положить картинки m1,m2 и т.д. в /static/img/markers/
    И можно использовать дальше ту же версию библиотеки


    1. printercu
      15.05.2016 08:32

      Что-то я сразу не подумал, про пути без хоста до картинок. Спасибо!


      Вы markerclustererplus или markerclusterer используете? Для 2-го вроде должна работать опция MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = '/assets/img/markers/m'


      Статику копировать и коммитить в public я не хотел, раз она уже есть в репозитории.


      1. DeKaNszn
        15.05.2016 12:50

        используется MarkerClusterer.
        с версией отсюда: https://github.com/googlemaps/js-marker-clusterer/


        1. printercu
          15.05.2016 13:06

          https://github.com/googlemaps/js-marker-clusterer/blob/gh-pages/src/markerclusterer.js#L190


          По-умолчанию всё ещё с гуглкода раздаётся :)


          1. DeKaNszn
            15.05.2016 13:09

            да, но если внимательно посмотреть код, то в начале проверяется заполнен ли styles при инициализации.
            это позволяет без проблем использовать инициализацию как в gist


            1. printercu
              15.05.2016 15:31

              Сложнее же получается, нет?