xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Модуль Geofield Yandex Maps — ввод и вывод гео-информации на Яндекс.Картах 2.1

Описание

Модуль Geofield Yandex Maps — это набор инструментов для ввода и вывода гео-информации на Яндекс.Картах версии 2.1. Модуль работает в связке с Geofield 2.x и добавляет:

  • Виджет для ввода
  • Форматтер для вывода
  • Views хэндлер для вывода нескольких объектов на одной карте
  • Текстовый фильтр для вставки карт в текст
  • Theme-функцию для лёгкого вывода карты с помощью PHP
  • Элемент формы для использования карты в своих формах

Поддерживаемая геометрия — точки, линии, полигоны.

Установка и использование

Установка стандартная — распаковать в sites/all/modules, включить.

Использование виджета

Добавляем сущности поле Geofield. Выбираем в качестве виджета Yandex Map:

Настраиваем по вкусу:

Результат:

Использование форматтера

В настройках отображения поля выбираем форматтер Yandex Map:

Настраиваем:

Результат:

Демо.

Использование Views хэндлера

Добавляем представление по материалам, с дисплеем Page и форматом Yandex Map выводящим поля:

Добавляем в представление поле Geofield в названии которого есть суффикс (GeoObject):

Добавляем любые другие поля. Они будут выводиться при клике на объекте.

Настраиваем формат:


Результат:

Демо (работает с AJAX!).

Использование текстового фильтра

В настройках текстового формата включаем фильтр Yandex Map. Изменяем порядок фильтров так, чтобы Yandex Map оказался первым:

Настраиваем по желанию:

На странице настроек модуля admin/config/system/geofield-ymap включаем опцию Use loader.

Для вставки карты в текст используем тег [map][/map]. Пример вставки карты с одной точкой:

[map]{"type":"Point","coordinates":[37.62,55.75]}[/map]

Пример вставки карты с переопределёнными настройками:

[map zoom=10 auto-zooming=0]{"type":"Point","coordinates":[37.62,55.75]}[/map]

Объекты описываются в формате GeoJSON.

Демо.

Использование theme-функции

Пример создания карты с одной точкой:

$map = array(
  '#theme' => 'geofield_ymap',
  '#map_type' => 'yandex#map', // optionaly, default 'yandex#map'
  '#map_center' => array(37, 55), // optionaly, default 0,0
  '#map_zoom' => 12, // optionaly, default 0 and auto zooming
  '#map_auto_centering' => TRUE, // optionaly, default FALSE
  '#map_auto_zooming' => TRUE, // optionaly, default FALSE
  '#map_clusterize' => TRUE, // optionaly, default FALSE
  '#map_objects' => '{"type":"Point","coordinates":[37.62,55.75]}', // GeoJSON, optionaly
);
$output = render($map);

Демо.

Использование карты в своей форме

$form['location'] = array(
  '#type' => 'geofield_ymap',
  '#title' => 'Location',
  '#description' => 'Select control and click to map for add object on map. Double click on object to remove it.',
  '#map_multiple' => TRUE,
  '#map_center' => array(55.733835, 37.588227),
  '#map_zoom' => 12,
  '#map_auto_centering' => TRUE,
  '#map_object_types' => array('point', 'line', 'polygon'),
);

В #map_object_types перечисляются названия объектов, которые сможет добавлять пользователь. После сабмита в $form_state['values']['location'] будет массив со значениями:
objects - объекты в GeoJSON
center - центр карты
zoom - зум карты

Демо.

Создание карты из html кода

Добавляем в текст:

<div class="geofield-ymap" data-map-objects='{"type":"Point","coordinates":[37,55]}'></div>

В настройках модуля admin/config/system/geofield-ymap включаем опцию Use loader.

Демо.

Создание карты с помощью javascript

ymaps.ready(function () {
  // for <div id="my-map" style="width:100%; height:400px;"></div>
  var map = Drupal.geofieldYmap.mapInit('my-map', {
    objects: '{"type":"Point","coordinates":[37.62,55.75]}',
    autoCentering: true,
    autoZooming: true
  });
});

Перед использованием не забываем подключить библиотеку:

drupal_add_library('geofield_ymap', 'geofield_ymap');

Демо.

Доступ к созданной карте из Javascript

Все объекты карт находятся в переменной Drupal.geofieldYmap.data['id-карты'].map. Объекты доступны по событию yandexMapInit:

// Доступ к определённой карте
$('#id-карты').bind('yandexMapInit', function (event, map) {
  // ...
});
 
// Доступ ко всем картам
$(document).bind('yandexMapInit', function (event, map) {
  // ...
});

Полезные ссылки:
Визуальный генератор GeoJSON
Определение координат (координаты идут в обратном порядке)
Сюда можно писать о багах и новых фичах

Полезные статьи:
Как быстро отрисовать 10000 меток на карте и не затормозить всё вокруг
Тепловые карты в API Яндекс.Карт
Метки кластера в виде круговой диаграммы

Написанное актуально для Geofield Yandex Maps 7.x-1.x-dev
Похожие записи

Комментарии RSS

Хорошо бы в депенденсы добавить geofield, по привычке через строчку прочитал описание, долго разбирался почему не появляется новый тип поля.

много функционала не требует geofield — theme функция, form элемент, текстовый фильтр

Кирилл, спасибо за ответ - помогло. Еще важный вопрос - я сделал все настройки по координатам как в представлении, так и в виджете. При выводе всех точек на одной карте - все работает. Однако при "добавить содержимое", я ставлю точку на карте при определенном масштабе карты, однако после сохранения всегда оказывается, что точка максимально приближена на карте (то есть масштаб всегда 16), кто-нибудь сталкивался с таким?

@Дмитрий у объектов на карте нет никаких других свойств кроме координат. Зум, положение карты, фаза луны и т.п. нигде не сохраняется. В настройках форматтера можно указать либо фиксированный зум, либо авто-зум.

Добрый день!

У меня такой вопрос: нужно чтобы на карте в views у разных объектов свои пресеты(или иконки). То есть разные цвета: Например магазинов один цвет, а у ресторанов другой.

Пробовал в views -> DEFAULT PRESET NAME вставить токены которую сделал с условиями не показывает. Также в Additional options токены добавлял тоже не получилось.

Как решить проблему?

СПАСИБО!

При использовании в тексте, есть ли возможность указать размеры выводимого поля карты?

css

Добрый день!
Подскажите, как можно явно указать размер балуна?

с помощью css

Здравствуйте.
Интересует такой вопрос: Воможно ли ставить маркер сразу после поиска точки?
Например пользователь вбил адрес и нажал найти и на это место ставится маркер (point, балун)

$(document).bind('yandexMapInit', function (event, map) {
  var searchControl = map.controls.get('searchControl');
  searchControl.events.add('resultshow', function (event) {
    var resultIndex = event.get('index');
    var result = searchControl.getResultsArray()[resultIndex];
    Drupal.geofieldYmap.addObjectByType(map, 'point', result.geometry);
  });
});

Маркер ставится, но друпал7 не сохраняет значение =(

Drupal.geofieldYmap.addObjectByType(map, 'point', result.geometry, true);

xandeadx, Есть ли возможность отключении кластеризации при максимальном приближении к точке?
сейчас у меня такая ситуации получилась: разместил 2 ноды по одному адресу.
Соответственно два маркера установились друг на друга и при максимальном увеличении кластер не раскрывается. А если отключить совсем кластеризацию, остается только 1 из двух прикрепленных нод, а вторая, видимо под ней, но не кликабельна

@Сергей простого способа нет

а есть ли возможность перейти от карты к просмотру улиц? если есть, то как это сделать?

нет, невозможно

Есть ли в планах добавление трека в виде файла (*.KML, *.PLT, *.GPX) с последующим выводом на карту?

не знаю что это, поэтому нет

Можно ли при добавлении на карту точки, добавлять для этой точки название или описание?

нет

Зашибись) Спасибо!
Еще вопрос: возможно ли сделать отображение в левом нижнем углу миникарты с меньшим масштабом?
Думал, для этого нужно прописать в controls в настройках форматтера 'miniMap', но тогда карта не отображается. Хотя я даже не уверен, что 'miniMap' отвечает именно за это.

в новых картах больше нет этого элемента

Хотелось бы еще такой момент уточнить. Я сделал расширенный фильтр по карте. Т.е. пользователь выбирает термин и ему отображаются нужные точки (адреса). При первой загрузке карты она масштабируется так, чтобы охватить все доступные точки. Сначала это было замечательно, но теперь появилась необходимость показывать совершенно другой кусок карты (к примеру какой-то город с приближением), даже если там нет точек, а после применения фильтра уже показывать точки как раньше. Есть ли возможность сделать это в стабл версии модуля ?

Это можно сделать через views и аргументы.
Первый вид делается без приближения, например по адресу сайт.ком/карта
второй вид делается с аргументом по термину сайт.ком/карта/%
и там уже сделать масштабирование как надо.

Можно ли добавить возможность создания не только метки, линия, полигона - но и пути, из точки А в точку Б

Geofield не поддерживает такого типа данных.

Не пойму, можно ли с помощью этого модуля строить маршруты?

строить можно, сохранять и выводить нет

Возможно кому-то пригодиться по кластеризации участков.
Если просто сделать участок - то он не сливается в кластер, в кластер сливается только метка.
Была у меня задача сделать чтобы участки сливались в кластеры, поддержки такого функционала в api yandex вроде нету, соответственно и в модуле тоже нет.
Выход следующий: ставим в настройках поля количество допустимых значений больше одного (я поставил не ограничено) и когда создаю ноду ставлю в центр участка метку, а затем обрисовываю участок.
Так получается и метка есть, которая сливается в кластер и участок прорисован.
P.S. Еще раз благодарность xandeadx'у за модуль (и не только за этот модуль, и не только за модули, а за кучу полезной инфы и пр.)

Спасибо за модуль. Один нюанс: объекты на карте можно как то идентифицировать? у них есть id ноды или что-нибудь подобное?
Спасибо

нет

Можно ли изменять цвет линий и полигонов?

А если показывать через Views? С метками всё просто :)

опция работает везде

Для всех линий выведенных через Views работает. А если задача несколько сложнее: есть типы линий, указанных через таксономию: "синий", "жёлтый", "зелёный".
При создании представления Views в зависимости от выбранного типа отобразить линии соответствующим цветом. Как в таком случае?

создать разные пресеты, указать в views опцию Preset field

Спасибо за модуль!

Только одно не могу понять, реально ли так реализовать - нужно разные картинки на разные точки, т.е. человек сам выбирает какой тип точки ставить стандарт, крестик, машинка. Типа такого...

Может еще такой вариант - в зависимости от термина таксономии разные картинки точки.
Реально ли что-то из этого?

Подскажите как реализовать такое: есть тип материала в котором присутствует два поля гео координат x|y. Как без лишних движений брать эти координаты и выводить карту на ноде? Буду очень благодарен за помощь!

http://xandeadx.ru/blog/drupal/704#comment-11122

Все просто. Сразу при открытии страницы на нее грузится вся информация по каждой точке в data-map-objects, в том числе и та, которую можно подгрузить ajax на форму при клике на пин (откройте исходный код страницы).
Если на карте 1000 точек и для каждой точки при клике выводим текста немного, несколько ссылок, небольшое фото - то такая страница будет весить 10-к и то и все 100-ни Мб.

Пример: добавил на карту около 30 точек, для каждой при клике вывожу несколько параметров - страница без точек уже весит примерно на 100 кб меньше, это без учета подгружаемых превью фото для каждой точки.

Автор, молю - сделайте ajax подгрузку данных на форму, которая выводится при тапе на пин. В остальном модуль почти идеальный.

Подскажи, пожалуйста, можно ли изменить цвет линий для полигона (и цвет заливки) при отметке в поле ноды (при создании/редактирования ноды, поле Geofield - Яндекс Карта).

создайте пресет (пример есть в папке с модулем), пропишите путь до файла в настройках модуля, пропишите имя пресета в настройках виджета.

Спасибо.
Ещё вопрос, как можно удалить все отметки (полигоны, метки) с карты?

Уважаемый, разработчик, очень полезен ваш модуль для друпал.
Подскажите как можно реализовать вот такой вывод: http://yandex.github.io/ymaps-pie-chart-clusterer/
Так же не пойму как делить метки по выводимому типу материала.
Может у вас где то есть мануал, который я не могу найти?

Подскажите как можно реализовать вот такой вывод

написать код

Так же не пойму как делить метки по выводимому типу материала.

не понимаю что это значит

В продолжении: http://xandeadx.ru/blog/drupal/704#comment-10616
Планируете ли внедрять такой функционал?
https://tech.yandex.ru/maps/jsbox/2.1/clusterer_icon_hover

не планирую

Добрый день.

тестировали модуль в связке с search_api?

ругается на Add geofield to fields list.

Добрый день, спасибо за модуль. Помогите побороть простейшую задачу. Вообщем, при создании ноды, есть текстовые поля

  • Город
  • Улица
  • Дом
  • и собственно яндекс карта

Мне необходимо по изменению в каждом из текстовых полей передавать значение в яндекс карту. Как бы написал простой скрипт, который отслеживает состояние полей, забирает их значение и передает в форму поиска и нажимает кнопку "Найти", на яндекс карте. Все работает, но чувствую, что это костыль, не подскажите как это реализовать с использованием Drupal way и API Яндекс карт??? Буду очень признателен.

Просьба подсказать, как сделать так, что бы в кластере отображались Заголовки (id == title), если 2 точки по одному адресу и при увеличении кластер не разбивается на точки.
Сейчас при нажатии на кластер выводится меню, где название вкладок не выводится http://pixs.ru/showimage/yamappng_9926959_15014776.png

Названия вкладок берётся из поля, указанного в опции "Cluster caption field"

Очень полезный и круто реализованный модуль, спасибо!

Есть один вопрос... Я, из-за использования views_field_view, не могу исключить из вывода строки с пустым field_view, поэтому в обычном случае пользуюсь hook_preprocess_views_view_unformatted, пробегаюсь по строкам и удаляю лишние.

Когда я попробовал удалить точки из массива $vars['rows']['#map_objects']['features'] по некоторому условию в hook_preprocess_views_view, оставшиеся точки вообще перестали отображаться.

Не подскажете, как мне поступить правильно? Спасибо!

unset($vars['rows']['#map_objects']['features'][0]);

Собственно, это как раз и не работает. При таком удалении формируется неверный JSON в data-атрибуте.

Собственно, я в итоге сделал вот так:

function helper_preprocess_views_view(&$vars) {
  $view = $vars['view'];
  $remove = array();
  if ($view->name == 'map') {
    foreach ($vars['rows']['#map_objects']['features'] as $key => $value) {
      $s = strip_tags(preg_replace('/\s+/', '', $value['properties']['balloonContent']));
 
      if (empty($s)) {
        unset($vars['rows']['#map_objects']['features'][$key]['geometry']);
        unset($vars['rows']['#map_objects']['features'][$key]['properties']);
      }
    }
  }
}

Вот если вместо
unset($vars['rows']['#map_objects']['features'][$key]['geometry']);
unset($vars['rows']['#map_objects']['features'][$key]['properties']);
поставить
unset($vars['rows']['#map_objects']['features'][$key]);

То не выводится вообще ничего.

проверил мой способ, работает.
вы что то неправильно делаете

Хорошо... Но я в принципе не понимаю, где ошибся. Вставляю просто ансет 0 в код хука вместо всего остального - и сразу ни одной точки нет, а вместо массива в дата-атрибут вставляется объект.

Т. е. сам hook_preprocess_views_view — единственный способ сделать это на сервере?

Я не так вопрос задал, извините. Тут уже бессмысленно продолжать, потому что это какие-то конкретные особенности моего проекта :) (например, хук-рендер в контексте применения field_view смысла не имеет).

Спасибо.

Здравствуйте, прежде всего спасибо за модуль.
Есть вопрос по настройке карты с Использование текстового фильтра. Эту страницу смотрел http://ymap.xnddx.ru/node/85, но не понятно как избавится от все навешаных "плюшек" типа поиска, фулл скрина. Пробовал [map fullscreenControl=0] но не работает. Так же хотелось бы отключить scrollZoom (масштабирование колесом мыши). Приведите пример пожалуйста с fullscreenControl и scrollZoom, думаю будет достаточно для аналогии.

на данный момент текстовый фильтр не поддерживает настройку поведения карты

Ух ты, какая незадача, кто бы мог подумать))). html понимаю так же не поддерживает?

А может тогда подскажете как мне вывести в бок 3-4 точки с возможностью настройки поведения карты?

Хм... так а как эта вся настройка выглядит в HTML формате (fullscreenControl и scrollZoom)? Для себя решил это созданием типа материала Адрес и вывел точки через views? но для такой простой задачи сложно как-то получается.

<div class="geofield-ymap" data-map-behaviors="fullscreenControl,scrollZoom"></div>

может вам проще создать готовую карту в конструкторе?

Просьба подсказать как сделать баллун как в примере https://tech.yandex.ru/maps/jsbox/2.1/balloon_and_hint
Что бы он не был привязан к точке, а появлялся снизу карты.

что конкретно вам подсказать? по ссылке есть весь код

Сделать вывод balloon, как на скрине:
http://pixs.ru/showimage/ballpng_2859913_15312198.png

Здравствуйте!
А как сделать? чтобы карта выводилась по клику на ссылку "показать на карте" как здесь http://72new.ru/1122 ?

у меня поставлен Fancybox.

Спасибо!

Скажите, как при в блоке с картой, сформированного вашим модутей через views, указать высоту карты? Ширина растягивается автоматически, а высота всегда 400px?

так же как высоту чего угодно в html — css

Просьба подсказать где указывать параметр options.panelMaxMapArea : Infinity ? - параметр для использования панели вместо balloon
Для вывода использую Views.
Заранее спасибо.

создайте пресет с опцией balloonPanelMaxMapArea: 'Infinity', укажите пресет в настройках Views

Спасибо, получилось.
Но еще вопрос.

Не получается реализовать для Аналогичный вывод для кластера.

xandeadx, подскажи пожалуйста, никак не выходит. Как из другого места из своего скрипта обратиться к готовой карте и добавить на ней точку?

ymaps.ready(function () {
  Drupal.geofieldYmap.data['geofield-ymap-1'].map.add(
    new ymaps.Placemark([55.684758, 37.738521])
  );
});
var map = Drupal.geofieldYmap.data['geofield-ymap-1'].map;
Drupal.geofieldYmap.addObjectByType(map, 'point', [55.684758, 37.738521]);

А на какое событие его повесить можно? Работает только с ymaps.ready и после инициализации карты, а раз уж всё обернуто в Drupal, наверно есть более правильное событие?

(function($) {
Drupal.behaviors.ymaps = {
  attach: function (context) {
  $(document).ready(function() {
      ymaps.ready(function () {
      var map = Drupal.geofieldYmap.data['geofield-ymap-1'].map;
Drupal.geofieldYmap.addObjectByType(map, 'point', [55.684758, 37.738521]);
      });
    });
  }
};
})(jQuery);

Как можно убрать пункт "Пробки"?
Карту вывожу через views

пропишите список контролов вместо default

добрый день, а подскажите как удалить установленную точку для карты, добавляю точку по вашему примеру

var map = Drupal.geofieldYmap.data['geofield-ymap-1'].map;
Drupal.geofieldYmap.addObjectByType(map, 'point', [55.684758, 37.738521]);

за ранее большое спасибо...

обойти все точки в map.geoObjects, найти нужную, удалить

Добрый вечер, а подскажите как вывести в полном описании ноды свои элементы управления, например мне необходимы только ползунок увеличения карты (zoomControl), тип переключения карты (typeSelector) и пробки (trafficControl). В управлении отображения все эти элементы отлично работаю по одиночке, а в связке карта просто пропадает или я что-то не так делаю?
Думал, что элементы управления можно просто через запятую указать - не прокатило.

Опция "Controls" в настройках форматтера. Контролы указываются через запятую.

Спасибо, я после запятой пробел ставил - оказалось не нужно. Сейчас все работает.

Здравствуйте. Такой вопрос: Как работать с мультиполями?
У меня есть поле address field с несколькими значениями. Чтобы вывести эти адреса на карту добавляю поле geofield (так же мультиполе).
И получается вилка Мортона:
1. Если выбираем виджет "Geocode from enathe filed" с указанием на наши адреса: то координаты не всегда корректно выставляются (и нет возможности подвигать) и нет подписи на маркерах (для каждого маркера свой адрес)
2. Если выбираем виджет "Yandex maps": то можно шикарно ручками выставлять маркеры, но на маркерах опять нет подписей соответствующих полю с адресами.

Хотелось бы иметь возможность ручками выставлять маркеры и чтоб у каждого маркеры был уникальный балун с адресом.

В виджете яндекс карт у объектов нельзя указывать никаких свойств кроме координат.

Чтобы вывести на карте точки из одной ноды но с разными балунами придётся выводить карту программно или альтерить данные поля до его вывода.

Здравствуйте, хочу убрать значок пробок из карты, в "Controls" ввожу TrafficControl([state: [trafficShown: false]]), но все элементы с карты пропадают, как правильно написать контрол?
Ещё я хотел бы поподробнее узнать, что делает опция "Use loader"?

в Controls пишутся имена контролов через запятую. Имена контролов указаны по ссылке в описании поля.

xandeadx, понятно, спасибо.
Решил вопрос с мультиполями так:
- Создал тип материала Маркер с полями: field_address и geofield
- В нужном типе материала добавил мультиполе entityreferens на маркер с виджетом entity inline form

А как получить ссылку на существующий экземпляр карты?
У меня карта выводится стандартными модулями, и хочу в своём js добавить пару фичей, но не знаю как обратиться к существующей карте. (знаю id карты)
Спасибо

xandeadx, не заметил. Сорри.
Правда когда срабатывает мой бихаверс, этот объект ещё пустой... Запускаю таймИнтервал каждые пол секунды до тех пор пока карта не проинициализируется. Так нормально, или есть какой-то событие?

А можно ли полигонам добавлять надписи, что бы без клика на нём была надпись?

Как можно объединить иконки в одну при отдалении в пресетах?

не понимаю вопроса

не понимаю вопроса

В общем у меня установлено 2 пресета, т.е. 2 разных иконки и при уменьшении зума карты эти иконки (особенно если их много на карте) начинают накладываться друг на друга. Как сделать чтобы иконки объединялись в одну при уменьшении зума карты?

включить кластеризатор

включить кластеризатор

Как его можно включить в пресет?

никак

Подскажи, пожалуйста, как задать положение для control.ZoomControl?
map.controls.add('zoomControl', { top: 75, left: 5 }); (не left, а right).
(https://tech.yandex.ru/maps/doc/jsapi/2.0/ref/reference/control.ZoomCont...)

var zoomControl = map.controls.get('zoomControl');
zoomControl.options.set('top', 75);

не проверял

ymaps.ready(function () {
  var zoomControl = ymaps.controls.get('zoomControl');
  zoomControl.options.set('right', 75);
});

Uncaught TypeError: Cannot read property 'get' of undefined

controls это метод карты, а не объекта ymaps

Скажите пожалуйста, что означает поле "Cluster caption field" и "Поле с содержимым иконки" в форматтере? И какие поля должны быть указаны в этих полях?

Uncaught ReferenceError: map is not defined

Cluster caption - заголовок маркера в балуне кластера ( https://yastatic.net/doccenter/images/tech-ru/maps/doc/freeze/S66wiqr3L7... )

Icon content field - текст в иконке ( http://ymap.xnddx.ru/map-icon-content-test )

Владимир, для начала карту неплоха бы получить

https://yadi.sk/i/cRXbGBBQfBLsr

ymaps.ready(function () {
  var map = Drupal.geofieldYmap.data['geofield-ymap-in-node-block-2'].map;
});

х.й)

Здесь у вас иконки меняются при отдалении карты, как сделать так же? Вы писали, что нужно включить кластеризатор, как это сделать?

отметить опцию "Clusterize placemarks" в настройках карты

отметить опцию "Clusterize placemarks" в настройках карты

Спасибо! А можно как-нибудь изменить эту бело-синюю иконку кластеризатора на пользовательскую иконку?

Скажите, а версия под 8-ку планируется?

после релиза 8-ки

Привет.
Подскажи, пожалуйста, как добавить на карту свою кнопку? Инструкция из оф. документации не работает.

Подскажите пожалуйста, нужно вывести на карте несколько точек. Карту вывожу через Geofield c геокодированием из другого поля. Предварительно создал текстовое поле, которое имеет несколько значений. В каждое значение вписываю нужный адрес, а на карте отображается только один - первый. В настройках пробовал играться с Multiple - Single, результат не дало.

Заранее благодарю за помощь!

в посте описаны все способы вывода карты

Доброго времени суток. Модуль крайне полезный, однако как сделать так, что бы пользователь ввел адрес в карту и произошло следующее:
1) маркер ставился автоматически;
2)адрес выносился в поле "адрес" (предусмотренное формой создания ноды.
крайне интересует этот вопрос.

Если геокодирование идет из мультиполя, то простого способа вывести у каждого балуна значение его адреса нет?

без кодинга нет

Подскажите пожалуйста как отключить скрол карты (колесом мыши) на всех страницах сайта. у меня ноды выводятся программно так что в "управлении отображением" ничего не отключается. зарание спасибо

Добрый день,
Я тут выяснил, что пользовательское соглашение яндекс карт запрещает использовать свои карты в админках, так как админки "ограничивают доступ к картам" (http://habrahabr.ru/company/yandex/blog/221139/#comment_7541981).
Получается этот модуль (виджет для расстановки меток) одним своим существованием нарушает это соглашение?

Насколько помню в последней редакции правил не запрещается закрывать доступ к данным с помощь пароля, нельзя деньги за доступ к ним брать. Хотите брать деньги - платите за лицензию (много платите).
Но я вам скажу так - до тех пор пока вы не начнете превышать ежедневные бесплатные лимиты регулярно - на вас никто внимания не обратит.

@Павел должно отключаться именно там

@Гость модуль официально рекомендуется яндексом — https://tech.yandex.ru/maps/jsapi/#plugins

Все, получилось. по какойто причине модель поведения "drag" не работает в режиме просмотра ноды. поставил"dblClickZoom"
однако при создании ноды карта все равно цепляется за курсор мыши.

при создании карты выводится виджет, при выводе карты в ноде выводится форматтер. у них разные настройки

В таком случае мне не удастся отключить скрол в при создании ноды? может я и туплю в конце рабочего дня, однако не вижу нстроек поведения виджета.

да, как оказалось такой опции в настройках виджета нет

Подскажите пожалуйста, как обратиться к существующим меткам имеющейся карты?

map.geoObjects

А обращаться к ним можно только по id через each?
Впервые столкнулся с API Карт, не могу разобраться, как для всех меток описать событие при наведении мышью.
Заранее спасибо.

обойти объекты с помощью map.geoObjects.each
навесить на объект обработчик события mouseenter

Возможно ли связать поле field_adress и поле карты?
что бы пир создании ноды метка ставилась автоматически

Здравствуйте. у меня обнаружилась бага в геокодере http://joxi.ru/ZrJyy3XhgxaxAj
я ставлю адрес в городе Симферополь а метка ставится в Запорожье. не подскажете в чем может быть причина и как пофиксить?

Подскажи, пожалуйста, как инициализировать карту, если она вызывается по клику отдельно (ajax загрузка).

Здравствуйте.
Модуль работает замечательно. Но стали выводиться сообщения с ошибками на страницах, где нет ни каких карт:

Warning: file_get_contents(<a href="http://api-maps.yandex.ru/2.0/" title="http://api-maps.yandex.ru/2.0/">http://api-maps.yandex.ru/2.0/</a>): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad request в функции _locale_parse_js_file() (строка 1488 в файле /home/www/хххх/htdocs/includes/locale.inc).

Как это исправить?

Скажите, а как можно сместить центральный балун на карте, например, налево на 50px?
(Я использую для вывода views).

День добрый, подскажите не сталкивались ли вы с такой проблемой. Использую версию JQuery 2.1 и поле карты не загружается, ошибка яваскрипта $(...).once is not a function в файле yamaps.run.js. Я читал разные форумы, на них пишут что проблема в последовательности подключеня скриптов. Мол сначала

jquery.min.js (2.1.1)
jquery.once.js
drupal.js

потом все остальное. Так вот она соблюдена, и сам файл вызывающий ошибку подключается уже после того как подключены вышеперечисленные модули. Не знаете в чем может быть проблема еще?

скажите пожалуйста, элементы управления, типы объектов не видны, с чем это могло быть связано? возможно ли конфликт с другим модулем для карт

Добрый день. Спасибо за модуль. Интересует вот какой вопрос. Есть ли возможность в Вашем модуле вставить в views-exposed-form саму карту, для возможности фильтрации по методу "область карты".

нет

выше писали этот код, вопрос куда его нужно вставить?

$(document).bind('yandexMapInit', function (event, map) {
var searchControl = map.controls.get('searchControl');
searchControl.events.add('resultshow', function (event) {
var resultIndex = event.get('index');
var result = searchControl.getResultsArray()[resultIndex];
Drupal.geofieldYmap.addObjectByType(map, 'point', result.geometry);
});
});

Добрый день! Вопрос - как к этому модулю подключить отображение "Регионы"?

@avbelov73 что это?

https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/regions-docpage/

По сути - новый форматтер карт, пока доступный только через JS

Это при одиночном выводе. А если мы говорим про views типа http://termo.ulalpha.ru/karta-obektov

без разницы

модуль способен показывать одновременно полигоны и точки. Нужно отображать районы(полигоны) и в них объекты(точки).

чуть выше вопрос был =) пропустил знак '?'

все вопрос снят))) такого же нет с гугл картами?

все же нет, после практики вопрос остался. А именно - у меня регион(область на карте), это термины, и точки это дома(ноды), вьюс одновременно не может вывести и термины и ноды на карте, одних в виде полигонов, вторых в виде точек. Не знаете как такое осуществить? Тупо - регион кликабельный, в нем точки объекты кликабельные. Буду благодарен если наведете на мысль.

нашел инфу, что это ваш модуль! Снимаю шляпу, вы круты!

о, великий гуру, хелпните советом.

http://xandeadx.ru/blog/drupal/704#ymap-theme

Благодарю за отклик! Вы пердлагаете программно выводить карту, без помощи views?

views не умеет выводить данные из разных базовых таблиц

views не умеет выводить данные из разных базовых таблиц

навскидку - много кода получится?

какого кода?

какого кода?

ну реализации вышеописанного

не в курсе

доброе утро. А как можно получить координаты текущего местоположения пользователя?

Доброе утро! А не подскажите, как добавить несколько меток на карте, при создании карты через JavaScript ???

Спасибо! А можно, как то скрыть метки при использовании Views хэндлера. Т.е. что бы при загрузке страницы на карте не было меток вообще, а появлялись только по клику по какому либо элементу ??

Спасибо за вашу помощь. Все получилось. А не подскажите, как программно передать значение для этого поля. Т.е. есть координаты (latlong) точки на карте, для каждой ноды. Нод будет порядка 3000, забивать руками не вариант.

куда передать?

http://xandeadx.ru/blog/drupal/704#comment-13087
а это куда вставлять? модуль делать? на странице? в template? Сорри за такой нубский вопрос

туда, где нужно вывести карту

туда, где нужно вывести карту

ну если прямо в ноде фигачить, то это явно будет не по идеологии друпала, получается, нужно делать модуль, который будет создавать страницу для карты, а там выводить этот код? поправьте если не правильно

поставь модуль, который будет передавать координаты. что-нибудь типа geofield. а вывод через views

получается, нужно делать модуль, который будет создавать страницу для карты, а там выводить этот код? поправьте если не правильно

гуру, укажите на ошибки, пожалуйста.

делайте как умеете

'#map_objects' => '{"type":"Point","coordinates":[37.62,55.75]}', // GeoJSON, optionaly

здесь он может принимать массив координат?

здесь он может принимать массив координат?

да!

{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
},
{ "type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
]
},
"properties": {
"prop0": "value0",
"prop1": 0.0
}
},
{ "type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
[100.0, 1.0], [100.0, 0.0] ]
]
},
"properties": {
"prop0": "value0",
"prop1": {"this": "that"}
}
}
]
}

последний вопрос, обещаю ;)

Выше вы написали, что невозможно вьюсом вывести полигоны(термины) и точки(ноды) одновременно. Тогда такой вопрос можно ли вьюсом вывести точки, потом отловить момент перед отрисовкой карты и забить области программно?

хелп)

http://xandeadx.ru/blog/drupal/704#ymap-javascript-reade

спасибо, а нет ли более развернутой информации? А то как то вырвано из контекста и по сути что куда не понятно.

(function ($) {
    $(document).bind('yandexMapInit', function (event, map) {
        console.log(Drupal.geofieldYmap.data['geofield-ymap-all-object-in-map-page'].map);
    });
})(jQuery);

опираясь на ваш пример и в итоге ничего не работает

console.log(map);

у вас же написано

Все объекты карт находятся в переменной Drupal.geofieldYmap.data['id-карты'].map.

console.log(map);

также не работает.

тогда не знаю

а нет ли более развернутой информации? А то как то вырвано из контекста и по сути что куда не понятно.

Доброе утро. По поводу

куда передать?

Есть массив, с координатами объектов (долгота, широта). Планируется программно создавать ноды. Так вот, как программно заполнить данное поле, при создании ноды, исходя из того, что широта и долгота уже известны.

При использовании модуля, возникает ошибка :

Warning: file_get_contents( sites/all/modules/geofield_ymap/js/geofield_ymap_presets.example.js): 
failed to open stream: No such file or directory в функции _locale_parse_js_file() (строка 1488 в файле /includes/locale.inc).

Geofield Yandex Maps 7.x-1.2
Drupal 7.38

Как побороть ошибку?

в настройках указать корректный путь к файлу с пресетами

Добавил фич-реквест на поддержку токенов в поле Map center.

Использую Global Filter для переключения между городами. Для каждого города хотелось бы иметь свой центр карты. Если бы была поддержка токенов, то можно было бы в списке городов (это термины таксономии) задать координаты центров и при выборе города автоматически менять центр карты глобально на весь сайт, включая формы добавления материалов.

Не думаю что в этом есть необходимость
https://www.drupal.org/project/field_default_token
http://drupal.stackexchange.com/a/42614/1823

Добавил координаты в body. В ноде отображается нормально, а на вьшке не выводится. Если добавить полигон вручную на карту, то вьюшка выводит нормально. Куда смотреть?

В сторону поля типа Geofield

Подскажите, пожалуйста, у вас написан пример "Использование theme-функции Пример создания карты с одной точкой:"

я копирую этот код:

$map = array(
  '#theme' => 'geofield_ymap',
  '#map_type' => 'yandex#map', // optionaly, default 'yandex#map'
  '#map_center' => array(37, 55), // optionaly, default 0,0
  '#map_zoom' => 12, // optionaly, default 0 and auto zooming
  '#map_auto_centering' => TRUE, // optionaly, default FALSE
  '#map_auto_zooming' => TRUE, // optionaly, default FALSE
  '#map_clusterize' => TRUE, // optionaly, default FALSE
  '#map_objects' => '{"type":"Point","coordinates":[37.62,55.75]}', // GeoJSON, optionaly
);
$output = render($map);

вставляю в тело ноды, формат ввода ставлю php код, сохраняю, но карта не выводится.

А где тогда использовать данный код? Сорри если вопрос супер нубский, но ответьте пжлста.

аа ну да.

print $output;

а как в базе хранятся данные о полигоне?

вижу только 6 столбцов с координатами, а по факту у полигона около 15ти точек.

а у меня: (
field_maps_lat
field_maps_lon
field_maps_left
field_maps_top
field_maps_right
field_maps_bottom
)

колонка wkt

колонка wkt

нет такой. вот структура таблицы:
entity_type
bundle
deleted
entity_id
revision_id
language
delta int
field_maps_geom
field_maps_geo_type varchar
field_maps_lat decimal(18,12)
field_maps_lon decimal(18,12)
field_maps_left decimal(18,12)
field_maps_top decimal(18,12)
field_maps_right decimal(18,12)
field_maps_bottom decimal(18,12)
field_maps_geohash

field_maps_geom

выше вы писали, для добавления точки:

var map = Drupal.geofieldYmap.data['geofield-ymap-all-object-in-map-page'].map;
Drupal.geofieldYmap.addObjectByType(map, 'point', [55.684758, 37.738521]);

почему тоже самое не работает для полигона?

                var map = Drupal.geofieldYmap.data['geofield-ymap-all-object-in-map-page'].map;
                Drupal.geofieldYmap.addObjectByType(map, 'polygon', [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0], [100.0, 0.0] ]);

Drupal.geofieldYmap.addObjectByType(map, 'polygon', [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0], [100.0, 0.0] ]]);

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Polygon-docpage/...

спасибо! а ссылку к полигону прикрутить можно?

что за ссылку?

что за ссылку?

по другому задам вопрос, вот так можно добавлять? :

                var polygon = new ymaps.Polygon([
                    // Координаты внешнего контура.
                    [[-80, 60], [-90, 50], [-60, 40], [-80, 60]],
                    // Координаты внутреннего контура.
                    [[-90, 80], [-90, 30], [-20, 40], [-90, 80]]
                ], {
                    hintContent: "Многоугольник"
                }, {
                    fillColor: '#6699ff',
                    interactivityModel: 'default#transparent',
                    strokeWidth: 8,
                    opacity: 0.5
                });
 
 
                var map = Drupal.geofieldYmap.data['geofield-ymap-all-object-in-map-page'].map;
                Drupal.geofieldYmap.addObjectByType(map, polygon);

а ссылка, в смысле балун

нет

может подскажите, тогда как прикрутить балун? к добавленному полигону:

Drupal.geofieldYmap.addObjectByType(map, 'polygon', [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0], [100.0, 0.0] ]]);

https://tech.yandex.ru/maps/jsbox/2.1/balloon_and_hint

как я понимаю, только вариант без привязки к геобъекту?

                Drupal.geofieldYmap.addObjectByType(map, 'polygon', [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0], [100.0, 0.0] ]]);
 
 
 
                map.balloon.open([100.0, 0.0], "Содержимое балуна", {
                    // Опция: не показываем кнопку закрытия.
                    closeButton: false
                });

не могу понять, почему нужно добавлять полигон так:

Drupal.geofieldYmap.addObjectByType(map, 'polygon', [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0], [100.0, 0.0] ]]);

а не так:
 var polygon = new ymaps.Polygon([
                    // Координаты внешнего контура.
                    [[-80, 60], [-90, 50], [-60, 40], [-80, 60]]
 
                ], {
                    hintContent: "Многоугольник"
                }, {
                    fillColor: '#6699ff',
                    // Делаем полигон прозрачным для событий карты.
                    interactivityModel: 'default#transparent',
                    strokeWidth: 8,
                    opacity: 0.5
                });
                map.geoObjects.add(polygon);
                map.setBounds(polygon.geometry.getBounds());

вариант работает + легко кастомизируется внешний вид.

наверно потому что первая запись на порядок короче второй

наверно потому что первая запись на порядок короче второй

только в этом причина?

И спасибо вам за помощь, все получилось

наверно потому что первая запись на порядок короче второй

но в первой записи нет возможности установить цвет, балун и прочие визуальные приблуды.

Подскажите, а можно ли, штатными средствами, изменять цвет точек при наведении?

https://tech.yandex.ru/maps/jsbox/2.1/event_rollover

эт я видел, поэтому и спросил - штатными средствами

Спасибо!

никак

Доброго времени суток!
Подскажите, пожалуйста, чайнику, как сделать вот такую штуку.
Мне нужно сделать поиск нод по месту (все, относящиеся к городу, или области, или в радиусе...). Если с радиусом есть решение из коробки, то с городом/областью сложности... Как я понимаю, в geofield хранятся только координаты, и тогда мне нужно еще одно поле для хранения страны-области-города. И, как я понимаю, когда пользователь ставит маркер (поиском по адресу), то адрес яндекс возвращает. Как его из виджета выцепить, чтобы запихнуть в дополнительное поле? Мне кажется, что отдельный запрос геокодирования по координатам будет лишним...

Без геокодирования город не узнать.

То есть после того, как пользователь ввел в виджете карты адрес, яндекс адрес нашел и поставил маркер, мне нужно еще раз выполнить запрос, но уже по координатам, верно я понимаю?

да

в настройках везде поставил координаты по умолчанию Санкт-Петербург(долгота и широта соответствующая). Карта на сайте подгружается сразу при входе, с центром в Москве а потом через секунду переходит на Санкт-Петербург. Задача сделать чтоб карта загружалась сразу с центром в Санкт-Петербурге, как это сделать ?

Нигде не могу найти как добавить текст на метку? Как здесь http://ymap.xnddx.ru/map-icon-content-test. Если не затруднить ткните, пожалуйста...

опция Icon content field

я как раз ее найти и не могу. Где она должна быть в настройках поля ее нет и в настройках отображения тоже?

Опция доступна только в настройках Views

Спасибо за крутой модуль.
Возможно ли при помощи данного модуля и views сделать фильтры на сайте связанные с фильтрами отображения точек на карте
Например как тут

http://restlook.ru/places/restaurants-and-bars/?show=1&sectiontype=list&page=0&realpage=0&onpage=18&realonpage=18&city=31&brand=&sort=DATE_CREATE&direction=ASC&method=replace&latmin=&latmax=&longmin=&longmax=&smallMapCenterX=&smallMapCenterY=&smallMapZoom=&sessSmallMapCenterX=&sessSmallMapCenterY=&sessSmallMapZoom=&itemsOnMap=&price[from]=&price[to]=&q=

Попробовал связать через термины таксономии и фильтры views, однако при фильтрации карта сбрасывается на точку посреди океана) Могу описать подробнее.
Заранее спасибо за ответ.

пользуйтесь стандартными раскрытыми фильтрами views

Спасибо за модуль! поставил на локальный тестовый сайт, все работает на ура! Поставил на этот же сайт но на хостинге, работает с ошибкой. Поясните пожалуйста как исправить ошибку?

Warning: htmlspecialchars() [function.htmlspecialchars]: Invalid multibyte sequence in argument in check_plain() (line 1567 of /includes/bootstrap.inc). Backtrace:
htmlspecialchars('fϷE~�B@X�q��K@', 3, 'UTF-8') bootstrap.inc:1567
check_plain('fϷE~�B@X�q��K@') handlers.inc:334
views_handler->sanitize_value('fϷE~�B@X�q��K@') views_handler_field.inc:1023
views_handler_field->render(Object) views_handler_field.inc:1041
views_handler_field->advanced_render(Object) theme.inc:354
template_preprocess_views_view_field(Array, 'views_view_field') theme.inc:1125
theme(Array, Array) views_handler_field.inc:1515
views_handler_field->theme(Object) views_plugin_style.inc:525
views_plugin_style->render_fields(Array) geofield_ymap_plugin_style_geofield_ymap.inc:201
geofield_ymap_plugin_style_geofield_ymap->render(Array) theme.inc:49
template_preprocess_views_view(Array, 'views_view') theme.inc:1125
theme(Array, Array) views_plugin_display.inc:2605
views_plugin_display->render() view.inc:1264
view->render() views_plugin_display_page.inc:230
views_plugin_display_page->execute() view.inc:1345
view->execute_display('page', Array) views.module:540
views_page('gde_kupit2', 'page') 
call_user_func_array('views_page', Array) menu.inc:519
menu_execute_active_handler() index.php:21

Недавно состоялся релиз drupal 8.0. Будет ли портирован на него Geofield Yandex Maps?

пока планов нет

Здравствуйте. Есть материал, каждую полю вывожу с помощью <?php $map = field_view_field('node', $node, 'field_map', array('label'=>'hidden')); print render($map);?>. Но при выводе яндекс карты выходит POINT (57.1687623054 50.2882387846)

Мне нужно чтоб показывал карту

@xandeadx, извиняюсь, я это знаю. Дело в том, что я темизирую полей материала через node.tpl.php. Вот код node.tpl.php:

<div class="col-md-4">
  <?php $logo = field_view_field('node', $node, 'field_logo', array('label'=>'hidden')); print render($logo);?>
<ul class="list-group">
  <li class="list-group-item"><i class="fa fa-home"></i><?php $adress = field_view_field('node', $node, 'field_adress', array('label'=>'hidden')); print render($adress);?></li>
  <li class="list-group-item"><a href="tel: <?php print render($phone);?>"><?php $phone = field_view_field('node', $node, 'field_phone', array('label'=>'hidden')); print render($phone);?></a></li>
  <li class="list-group-item"><?php $category = field_view_field('node', $node, 'field_category', array('label'=>'hidden')); print render($category);?></li>
  <li class="list-group-item">Porta ac consectetur ac</li>
  <li class="list-group-item"><?php $map = field_view_field('node', $node, 'field_map', array('label'=>'hidden')); print render($map);?></li>
</ul>
</div>
<div class="col-md-8"><?php echo render($content['body']); ?></div>

Результат: http://storage8.static.itmages.ru/i/15/1201/h_1448981747_9103406_91a0ec3...

echo render($content['field_map']);

@xandeadx, спасибо!

Доброе утро. А не подскажете как можно импортировать через Feeds метку на карте? В Feeds есть поля Longitude и Latitude, пытаюсь передать им соответствующие координаты, но точка так и не появляется. Подскажите, что не правильно делаю? Спасибо.

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

Создайте два поля

Вдруг кому понадобится, для удаления всех меток просто removeAll() перестал работать. Удаляет, но после этого редактирование не работает.
Рабочий вариант (сначала останавливаем принудительно редактирование объекта):

map.geoObjects.each(function(val, i) {
  val.editor.stopEditing();
  map.geoObjects.remove(val);
});

Приветствую.
А каким образом можно вывести все метки на карте, однако центровать только на том, что указан в текущем материале?

И кстати не получилось никаким образом скрыть пустую карту в Panels. Все равно выводит ее но без координат. Только через js проверять geofieldYmap.data.

Приветствую,
а как можно из js переместить карту к новому местоположению?
карта с точками на views..

спасибо!

Добрый день, xandeadx.

Скажите, может ли описанный способ доступ к карте через jquery не работать, когда вьюшка—блок, а не страница?

не может

не могу сообразить, как бы вывести координаты текстом из карты с меткой на этой же странице. ну т.е. карта с меткой, а рядом координаты этой метки в виде текста

а, разобрался
вьюсом блок сделал

Здравствуйте. У меня следующая задача: есть два типа магазинов(собственные и партнёров), их необходимо отображать на одной карте разными иконками.
Я создал 2 типа материала(для каждого из магазинов). Добавил в фильтр Views второй тип материала через OR. Однако на карте выводится только один. Подскажите, возможен ли вывод двух типов материалов(может задача решается по другому в рамках этого модуля)?

возможен, модулю не важен ни тип материалов, ни тип сущностей

xandeadx, спасибо за быстрый ответ. Понял, значит я просто неправильно добавляю второй тип материала, разберусь(видимо надо делать через relationship). Последний вопрос, как назначить кастомную иконку флажка в зависимости от типа материала?

Благодарю. Однако всё же не могу вывести 2 типа материала на одной карте. Понимаю что это вопрос скорее по Views, однако был бы благодарен за помощь. xandeadx, можете парой предложений описать, как во Views добавить два типа материала, каждый из которых содержит поле с координатами, чтобы они вывелись на одной карте? (материалы не сязаны модулями Entity Reference или как то ещё)

добавьте фильтр по типу материала, в настройках отметьте нужные

xandeadx, я так и сделал. В фильтре выбрано 2 типа материала. В разделе полей у меня два поля с координатами каждого типа, однако на карте отображаются только координаты дого типа данных, чьё поле стоит первым в списке полей вьюса.

Модуль не умеет выводить данные из двух полей одновременно.

xandeadx, значит я не могу на карте показать одновременно два типа материала?(или они каким то образом должны разделять одно поле?)

типов материала может быть сколько угодно, поле должно быть одно

почему-то не запоминает значение масштаба в "значении по умолчанию"
т.е., пользователь создает материал, ему предлагается карта с максимальным увеличением, (что бы админ не ставил в свойствах поля все равно масимальное)

еще странный момент: если на собственно сайте яндекса в карте в поиске вбить координаты, типа 64° 17' 4.197 N 41° 49' 38.044 E ,то яндекс их найдет и укажет это место. В виджете же это не происходит. Зачем-то он знаки минут-секунд в код &#39 переводит

Доброго времени суток, xandeadx! У меня почему то не получается получить карту(
вот скрин: http://skrinshoter.ru/s/020316/0wK6oW
можете подсказать в чем проблема?

Уважаемый, xandeadx! Я использовал вашу подсказку, но у меня всё равно не получается( будьте так любезны, подскажите где теперь ошибка?

<script>
    ymaps.ready(init);
 
         // Доступ к карте каталог
        function init({
            $(document).bind('yandexMapInit', function (event, map) {
                Drupal.geofieldYmap.data['geofield-ymap-catalog-page'].map.events
                    .add('mouseenter', function (e) {
                        e.get('target').options.set('preset', 'custom#hover');
                    })
                    .add('mouseleave', function (e) {
                        e.get('target').options.unset('preset');
                    });
            });
    });
</script>

вам не нужен ни ymaps.ready(init) ни function init

xandeadx, ваш модуль хорош! Спасибо.
Маленький вопрос: возможно-ли и как вывести и карту и список материалов на одно странице, особенно на странице с пейджером на вроде таксономии?

выведите всё что нужно в блоках

Это понятно. Непонятно как например синхронизировать список материалов с геофилд на 2-ой странице таксономии и блок с картой. Их id пейджеров должны быть разными.

укажите Pager ID в настройках views

Если указывать одинаковый Pager ID во представлении страницы и в представлении блока то пейджер не показывается вообще, если разные, то они не синхронизируются при переходе по страницам (

Еще не подскажите на views карте есть какое-то ограничение на количество показываемых на карте объектов? У меня почему-то только 8 первых (пейжер убран, выставлено "показывать все"). Если переключить на любой другой стиль отображения, например на табличный, то будет показывать все записи (больше 8 точно). У всех показываемых материалов выставлены маркеры на картах и на страницах этих материалов местоположение показывается правильно.

xandeadx, разобрался, извините за беспокойство.
Оказывается шалил модификатор глубины.

Здравствуйте,
В режиме редактирования вижу карту, как только сохраняю - карту не видно. Что делать?

Здравствуйте, не подскажете с помощью вашего модуля возможно прикрутить к балуну картинку, при нажатии на сам балун. спасибо

Если геокодирование идет из мультиполя, то простого способа вывести у каждого балуна значение его адреса нет?

function mymodule_preprocess_field(&$variables, $hook) {
  if ('field_map' == $variables['element']['#field_name']) {
    foreach ($variables['element'][0]['#map_objects']['features'] as $key => $item) {
      if (isset($item['properties']['balloonContent'])) {
        $address = $variables['element']['#object']->field_address[LANGUAGE_NONE][$key]['safe_value'];
        $balloon_content = str_replace('[node:field-address]', $address, $item['properties']['balloonContent']);
        $variables['items'][0]['#map_objects']['features'][$key]['properties']['balloonContent'] = $balloon_content;
      }
    }
  }
}

xandeadx, спасибо за модуль!
Есть вопрос: Вывожу карту через views и мне нужно чтобы scrollZoom не работал а Drag работал. Как правильно прописать эти опции в поле "Поведение"?
Спасибо!

drag

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании