views и map

Аватар пользователя nasferatu nasferatu 25 октября в 11:11

Есть материалы с геополем. Как вывести все материалы на карте умею, но как скомбинировать вывод тизеров в столбик и рядом карту с материалами, но чтобы было взаимодействие между тизерами и картой. Модуль geofield_map, но как добиться как в демо - http://www.geodemocracy.com/geofield_d8/web/geoplaces-gmap-places-rates я пока не понял. Кто реализовывал такое, подскажите, пожалуйста.

Комментарии

Аватар пользователя marassa marassa 25 октября в 11:51

nasferatu wrote: как скомбинировать вывод тизеров в столбик и рядом карту с материалами

Два разных дисплея view, выведенных блоками.

nasferatu wrote: чтобы было взаимодействие между тизерами и картой

Довольно нехитрый javascript. Вот тут сначала переключитесь на карту, ткнув на закладку "Карта" в правом верхнем углу фотогалереи, а потом поводите мышкой над названиями объектов в правой панели.

nasferatu wrote: Модуль geofield_map

Я использую geolocation, но по идее и с geofield должно получиться.

Аватар пользователя nasferatu nasferatu 25 октября в 12:28

Спасибо. Думал про 2 отдельных представления связать между собой. Но, предположил, что в модуле есть готовый функционал, который не заметил.

Аватар пользователя marassa marassa 25 октября в 13:38
1

nasferatu wrote: Думал про 2 отдельных представления связать между собой

Можно и разных, у меня как раз два разных. В модуле geolocation, насколько помню, есть возможность прямо в основном карточном представлении вывести еще и список, но я этим не пользуюсь по ряду причин. Про модуль geofield ничего не знаю. Но сомневаюсь, что подобное будет работать прямо из коробки. Вот мой js в качестве примера:

  $(".view-content>div").find(".rcbt-artefacts,.rcbt-events,.rcbt-cities,.node--type-artefacts").hoverIntent(
      function() { Drupal.geolocation.animateMarker($(".views-field-title a,.field-name-node-title a", this).attr('href'), 1) },
      function() { Drupal.geolocation.animateMarker($(".views-field-title a,.field-name-node-title a", this).attr('href'), 0) }
    );

  Drupal.geolocation.animateMarker = function(url, toggle) {
    var geolocationMap = Drupal.geolocation.maps[0];
    for (var i = 0, len = geolocationMap.mapMarkers.length; i < len; i++) {
      if (geolocationMap.mapMarkers[i].content === url) {
        geolocationMap.mapMarkers[i].setAnimation(toggle);
        return;
      }
    }
  }