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

Drupal → Краткий обзор модулей для работы с картами и геоданными

Location

Поле для хранения геокоординат. Виджет позволяет вводить как адрес, так и широту/долготу (скриншот). В составе есть геокодер. Имеется интеграцию с Views. Форматер для вывода данных на карте отсутствует, поэтому модуль используется в основном в связке с GMap Module.

GMap Module

Предоставляет интерфейс для работы с Google Maps API 2 (разрабатываемая версия 7.x-2.x работает на Google Maps API 3). Модуль имеет интеграцию с Location и позволяет указывать координаты с помощью клика на карте виджета (скриншот). Доступен форматтер для вывода маркеров на карте (скриншот). Имеет интеграцию с Views и может выводить несколько точек на одной карте по данным из поля Location.

Get Locations

Поле для хранения геокоординат (скриншот) и форматтер для их вывода на картах Google с помощью Google Maps API 3. Модуль позиционируется как современная альтернатива связке Location и GMap Module. В отличии от GMap Module, указывать координаты с помощью клика по карте — нельзя (уже можно :)). Это делается либо с помощью геокодирования введённого адреса, либо с помощью перетаскивания дефолтной метки. Есть интеграция с Views.

Geofield

Поле для хранения геоданных (точки, линии, полигоны и т.д.) и форматтер для их вывода на Google Map или любой карте, поддерживаемой OpenLayers. Из виджетов доступны: Well Known Text (WKT), Latitude / Longitude, GeoJSON, Bounds. Виджет с визуальным добавлением данных доступен с помощью модулей Leaflet Widget или Geofield Gmap. Встроенного геокодера нет, но есть интеграция с модулем Geocoder. Интеграция с Views с помощью подмодуля Geofield Map.

Geofield Yandex Maps

Виджет, форматтер и views хэндлер для Geofield позволяющий вводить и выводить гео-объекты (точки, линии, полигоны) на Яндекс.Картах 2.1. Модуль так же позволяет использовать карты в своих формах и динамически генерировать карты с помощью PHP, HTML или Javascript.

Geolocation Field

Поле для хранения геокоординат и форматтер для их вывода на карте Google. Вводить координаты можно как кликом на карте виджета, так и с помощью поиска (скриншот). Интеграция с Views пока только в виде отдельного модуля. Демо, видео.

Yandex.Maps

Поле для хранения геоданных (точки, линии, полигоны, дороги), виджет для визуального добавления данных и форматтер для их вывода на карте Яндекс. Модуль довольно странный, например для ввода точки надо кликнуть на карте, в появившейся форме ввести заголовок маркера, текст балуна, выбрать цвет и нажать кнопку Save (скриншот). Пользователю доступны сразу все инструменты для ввода данных, без ограничения. Количество данных так же не ограничено. Хранятся все данные в формате json в одной единственной колонке, поэтому об Views можно даже не думать.

Google Maps API V3

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

OpenLayers

Набор модулей для интеграции Drupal с одноимённой javascript библиотекой. Библиотека представляет из себя мощный, но довольно сложный инструмент для работы с картами. В качестве карт можно использовать OpenStreetMap, Google Maps, Yahoo Maps и другие. Есть интеграция с Views.

Leaflet

Интеграция молодой javascript библиотеки для работы с картами — Leaflet. Модуль представляет из себя форматтер полей Geofield, выводящий данные на карте. Виджет для визуального ввода доступен в виде отдельного модуля. Есть интеграция с Views и возможность вывести несколько точек на одной карте. По умолчанию из карт доступна только OSM Mapnik, но есть возможность прикрутить Google Maps и Yandex Maps. Есть PHP API для лёгкого вывода карт.

Location Map

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

Simple Google Maps

Форматтер для текстовых полей, позволяющий выводить карту Google с маркером по адресу, указанному в поле (скриншот).

Резюме: в качестве основы для хранения данных советую начать с Geofield. Если устраивают Google Maps, то дополнительных модулей не понадобится, если нужны Яндекс.Карты, то добавить — Geofield Yandex Maps, иначе можно посмотреть в сторону Leaflet и OpenLayers.

Написанное актуально для Drupal 7
Похожие записи

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

Я на Best Maps делал все ручками. При переходе на D8 подумаю насчет модулей.

Интересно было-бы сравнить OpenLayers и Leaflet. Понятно, что модуль OpenLayers гораздо круче по функционалу, а вот чем они отличаются сами по себе (без друпала) - это интересно. Пока не пробовал ни тот ни другой, но присматриваюсь к обоим. У Leaflet по крайней мере внушительный послужной список - Flickr, foursquare, Wikimedia и др.
Кстати у тебя ошибка в заголовке OpenLayers (ссылка неправильная)

спасибо что напомнил, добавил в статью.

Пока что я рассматриваю Leaflet и OpenLayers как контейнеры для показа OSM (хотя можно попробовать отобразить в них карты, например не имеющие своего API). Однако во-первых меня не устраивает что двойной правый клик по дефолту ничего не делает на обоих (а должен уменьшать как на яндексе гугле и тд.). Конечно это можно попробовать решить, но это уже как стандарт, странно что из коробки этого нет.

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

Доводилось использовать яндекс API MAP 2.0 и Leaflet 0.4. Leaflet произвел впечатление более быстрой, логически структурированной и понятной библиотеки, а также плюсы: меньший вес, отсутствие зависимости от других серверов, и как уже упоминали четкая лицензия. Выбор остановил на Leaflet. Ну и сейчас многие крупные западные сайты с гео сервисами переходят на Leaflet, что тоже вроде как говорит в его пользу.

Про OpenLayers много слышал что он монструозен, но подтвердить/опровергнуть не могу, не использовал.

Надо вывести карту на одной странице .

Что взять ?

Или вручную все делать в таком случае ?

Делал года 2 назад на шестерке карту для своего города, проблема была в том что ни в гугле ни в яндексе ее не было, пришлось рисовать самому. Реализовал через Location + Gmap Вот что получилось
Потом пробовал OpenLayers штука классная тем что там ты не зависишь от конкретной карты, поддерживается куча карт + свои собственные. Пробовал этот модуль где-то год назад тоже под шестерку и мне он тогда показался немного сыроватым, возможно сейчас под семерку уже допилили.

Привет. Спасибо за обзор, очень интересно, в принципе как любые твои посты.
Хотел бы немного расхвалить модуль getlocation под семерку. Модуль слегка по началу кажется обьемный с массой настроек, но слегка поковыряв, понимаешь, что это то, что нужно. Очень удобное добавление меток на карту. Автокомплит по адресу, т.е как при поиске на картах гугл. Прикольная интеграция во вьювс. Можно на одном слое вывести все метки , которые были добавлены. Причем порадовала возможность выводить в баллун содержимое из полей материала. Например можно сделать чтобы была картинка обьекта, краткое описание и цена.
В общем не понравился.

я хотел сказать МНЕ понравился :)

xandeadx, подскажи, пожалуйста, какой лучше модуль взять, если нужно, чтобы люди вводили город, штат и иногда адрес. И если при этом карты не особо (пока) нужны, но нужна база городов :)

@kalabro, попробуй Get Locations, раз его так хвалят)

задолбалась всё это тестить :( остановилась на олдскульном Location + Location Taxonomize

Спасибо за наводку на Leaflet, написал для него модуль, подключающий слои яндекс карт (Карта, Гибрид, Спутник, Народная, Народная гибрид). Жаль что на d.org нет права модули публиковать, так бы выложил для народа.

@Mike выложи на drupal.ru, или здесь ссылочку закинь, очень будем благодарны)

Подскажите как можно полноценно подружить друпал и яндекс карты (views, вывод нескольких локаций, таксономии и т.п.) ??
gmaps не могу использовать, город/улицы почти не видно, в отличие от яндекса.
Заранее благодарен.

единственный вариант — leaflet.
яндекс.карты прикручиваются с помощью leaflet_more_maps

bigferumdron@gmail.com, по поводу getlocation:

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

Подскажите, как это сделать?

Здравствуйте.Я потестировал модуль Yandex.Maps, но это вроде не совсем то, что мне хотелось бы иметь.Задача такая на карте есть метки, пользователь прокладывает маршрут и если на его пути встречаются метки, то пользователю они отображаются на одной карте и выводятся в каком количестве на его пути меток.Подскажите существует такое готовое решение?

не существует

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

не подскажете почему не отрабатывает модуль gmap - вместо карты появляется [gmap markers=lblue::48.51598558042979,35.05464649235364...

Ищу программиста в стартап о путешествиях для разработки скрипта маршрутизатора и далее по картам! Спб, желательно на постоянную работу. пишите на annabruker@мейл.ru

Спасибо, за статью! Но вот вопрос как сделать или какой модуль надо ещё к geofield+geocoder для того чтобы можно было по клику на карту указывать координаты?

Для того чтобы можно было ставить точки на карте Yandex maps во время создания ноды написал модуль для geofield, также точки из выводятся через views, хочу выложить на d.org, но доступа нет, может кто-то поможет?

@Ильдар визуальный виджет можно поставить с помощью модулей Leaflet Widget или Geofield Gmap. Geocoder при этом будет лишний.

@Mike нужно зарегистрироваться на drupal.org, поставить и настроить git, в профиле создать проект типа sandbox

вообще я сейчас как раз неспешно пишу модуль для работы с яндекс.картами 2.1, сторэйдж тоже — geofield. так что возможно имеет смысл подождать)

@xandeadx у меня тоже карты на api 2.1, также кластеризация объектов и возможность выбора баллунов из стандартного набора Яндекса. Буду осваивать git))

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

Парни а почему до сих пор слои Yandex карт не добавляются в карты OpenLayers, как базовые слои? Хотелось бы добавить в настроенном сайте с OpenLayers, слои Ya.

это запрещено лицензией яндекса

Yandex.Maps
Хранятся все данные в формате json в одной единственной колонке, поэтому об Views можно даже не думать.

Уже сть, вроде интеграция с views.

Уже сть, вроде интеграция с views.

да есть

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

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

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

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