У меня сайт на Джумле, пытаюсь перенести его на 4-ку, чтобы форум и сайт представляли собой единое целое.
На сайте есть карта членов организации, которую создавала с помощью компонента для Джумлы Zh YandexMap.
Ничего подходящего для CMS Vbulletin не нашла, поэтому пришлось искать, как сделать карту, и куда всё это вставить.
Нужно заметить, что в сети есть инструкции по использованию инструмента Яндекс
"Конструктор карт",
но этот сервис позволяет сделать самые простые варианты карты и, боюсь, не всегда сможет решить поставленные задачи:
Видео:
В моём случае этот инструмент не подходит, поскольку нужно порядка 30 меток, которые распределены по территории России и Украины:
Кроме того, необходимы метки, имеющие свой стиль, возможность масштабирования, а также раскрывающаяся при клике информация:
Получилось всё сделать следующим образом.
Создаём карту с помощью сервисов Яндекс
Мне очень пригодился инструмент
"Песочница" с разными примерами кода. Идём туда:
Скрин
Справа ставим галочку возле "автообновления", чтобы сразу видеть результат изменений.
Переходим во вкладку "HTML" и указываем параметры карты, необходимые для нас:
Code:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Примеры. Размещение карты на странице.</title>
<!--
Подключаем API карт
Параметры:
- load=package.standard - основные компоненты;
- lang=ru-RU - язык русский.
-->
<script src="http://api-maps.yandex.ru/2.0/?load=package.standard&lang=ru-RU" type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 400px; height: 300px"></div>
<input type="button" id="destroyButton" value="Удалить карту"/>
</body>
</html>
Я изменила заголовок, и указала другие размеры: значение ширины и высоты изменила соответственно на 850 и 450 px
Возвращаемся во вкладку JavaScript. Здесь мне нужно указать свойства карты и моих меток. У меня нет каких-то знаний в этой области, поэтому использовала практически готовые примеры, которые размещены во вкладках меню слева. Нашла вкладку "Метки" с примерами меток:
Скрин
Разобралась. Это не сложно, просто нужна внимательность. Код вверху задаёт свойства карты (масштаб и координаты точки, находящейся в центре):
Code:
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
center: [55.76, 37.64],
zoom: 10
}),
Масштаб поставила 2.8 (оказывается, карты принимают не только целое значение, но и с десятыми, только ставить надо точку вместо запятой). Координаты точки (опять методом тыка - 65, 103).
Поскольку при таком масштабе без возможности зумирования карта будет бесполезной, из вкладки "Поведения карты" добавляю свойства карты:
Code:
// Включим поведения по умолчанию (default)
// и добавим масштабирование колесом мыши.
behaviors:['default', 'scrollZoom']
});
Теперь нужно добавить метки. Мне нужно указать свои, поэтому в примере с метками нахожу нужный мне кусок кода:
Code:
myPlacemark2 = new ymaps.Placemark([55.76, 37.56], {
// Свойства.
hintContent: 'Собственный значок метки'
}, {
// Опции.
// Своё изображение иконки метки.
iconImageHref: '/maps/doc/jsapi/2.x/examples/images/myIcon.gif',
// Размеры метки.
iconImageSize: [30, 42],
// Смещение левого верхнего угла иконки относительно
// её "ножки" (точки привязки).
iconImageOffset: [-3, -42]
});
Теперь меняю свойства метки на нужные мне: указываю ссылку на нужную мне картинку, указываю текст при клике (свойство balloonContent нашла в описании другой метки), меняю координаты точки (46.639049, 32.609202), поправляю размеры картинки (35,35), убираю смещение метки (в моём изображении нет "ножки" метки). Добавляю комментарий в начале, чтобы легче было ориентироваться в большом списке. Получилось так:
Code:
// Создаем метку Киринович Светлана Павловна
myPlacemark8 = new ymaps.Placemark([46.639049, 32.609202], {
// Свойства.
balloonContent: 'Киринович С.П. (Херсон)',
}, {
// Опции.
// Своё изображение иконки метки.
iconImageHref: 'http://masod.org/administrator/components/com_zhyandexmap/assets/icons/default%23metroKievIcon.png',
// Размеры метки.
iconImageSize: [35, 35]
});
Теперь копированием составляю список меток, меняя название (myPlacemark1, myPlacemark2 и т.д) и указывая необходимые данные и координаты. В конце добавляю это в код вывода меток на карту. В примере:
Code:
// Добавляем все метки на карту.
myMap.geoObjects
.add(myPlacemark1)
.add(myPlacemark2)
.add(myGeoObject);
Мой список:
Code:
// Добавляем все метки на карту.
myMap.geoObjects
.add(myPlacemark1)
.add(myPlacemark2)
.add(myPlacemark3)
.add(myPlacemark4)
.add(myPlacemark5)
.add(myPlacemark6)
.add(myPlacemark7)
.add(myPlacemark8)
.add(myPlacemark9)
.add(myPlacemark10)
.add(myPlacemark11)
.add(myPlacemark12)
.add(myPlacemark13)
.add(myPlacemark14)
.add(myPlacemark15)
.add(myPlacemark16)
.add(myPlacemark17)
.add(myPlacemark18)
.add(myPlacemark19)
.add(myPlacemark20)
.add(myPlacemark21)
.add(myPlacemark22)
.add(myPlacemark23)
.add(myPlacemark24)
.add(myPlacemark25)
.add(myPlacemark26)
Нужно быть внимательным, чтобы не упустить закрывающие скобки, запятые и т.п. Но ошибиться не страшно: это сразу заметно по примеру карты.
Например, когда упустила закрывающую фигурную скобку, карта просто пропала.
Смотрю на то, что получилось.
Скрин
По-моему, можно добавить элементы управления карты (код взяла в примере на вкладке "Элементы управления"). Сразу после свойств карты добавляю понравившиеся мне элементы:
Code:
// Для добавления элемента управления на карту
// используется поле map.controls.
// Это поле содержит ссылку на экземпляр класса map.control.Manager.
// Добавление элемента в коллекцию производится
// с помощью метода add.
// В метод add можно передать строковый идентификатор
// элемента управления и его параметры.
myMap.controls
// Кнопка изменения масштаба.
.add('zoomControl', { left: 5, top: 5 })
// Список типов карты
.add('typeSelector');
Вроде, всё. Теперь перехожу на третью вкладку песочницы "Всё вместе" и копирую полученный код. Сохраняю в текстовом документе.
Размещаем в виджете CMS.
Иду в админпанель -> vBulletin CMS -> Виджеты -> Создать виджет.
Заполняю заголовок "Карта МАСОД".
Указываю тип виджета "статичный HTML код". Закрываю.
Теперь нахожу только что созданный виджет "Карта МАСОД" в списке виджетов, нажимаю "Настроить",
Вставляю код карты
без открывающих/закрывающих тегов <html>.
Сохраняю.
Все, виджет "Карта МАСОД" создан и готов к размещению на сайте.
Через "Управление размещениями" размещаю виджет там, где мне нужно.
Оффтоп
Большое спасибо ikopylov за помощь и подсказки