MediaWiki:Common.js — различия между версиями
Материал из Энциклопедия фонда «Хайазг»
(Новая страница: «/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждо...») |
Myavruyan (обсуждение | вклад) |
||
| (не показано 39 промежуточных версий 2 участников) | |||
| Строка 2: | Строка 2: | ||
//получает адреса, обрабатывает и отображает точки на карте | //получает адреса, обрабатывает и отображает точки на карте | ||
| − | function ymGeocod(val,val2) | + | function ymGeocod(val, val2, val3, val4) |
{ | { | ||
| + | /* | ||
| + | val -адрес | ||
| + | val2-картинка | ||
| + | val3-статус объекта | ||
| + | val4-название объекта | ||
| + | */ | ||
| + | //МАКЕТ ДЛЯ БАЛУНА ОДНОЙ ТОЧКИ | ||
| + | // Макет заголовка балуна, в нем сразу и данные | ||
| + | var myBalloonContentLayout = ymaps.templateLayoutFactory.createClass('<div class="bal-div"> $[properties.clusterCaption]<br /><br />$[properties.balloonContentBody]</div>'); | ||
| + | |||
| + | // Создание макета основного содержимого контента балуна. | ||
| + | // var myBalloonContentBodyLayout = ymaps.templateLayoutFactory.createClass( | ||
| + | // '$[properties.clusterCaption]<br /><br />$[properties.balloonContentBody]<br /><br />', { | ||
| + | // build: function () { | ||
| + | // this.constructor.superclass.build.call(this); | ||
| + | // } | ||
| + | // }); | ||
| + | |||
| + | //МАКЕТ ДЛЯ БАЛУНА КЛАСТЕРА (НЕСКОЛЬКИХ ТОЧЕК) | ||
| + | var myClusterBalloonLayout =ymaps.templateLayoutFactory.createClass("", { | ||
| + | build: function () { | ||
| + | geoObjects = this.getData().properties.get('geoObjects'); | ||
| + | var parent = this.getParentElement(), | ||
| + | |||
| + | content = "<div class='bal-div-home'>"; | ||
| + | for (var i = 0, l = geoObjects.length; i < l; i++) | ||
| + | { | ||
| + | balloonContentBody = geoObjects[i].properties.get("balloonContentBody"); | ||
| + | content += "<div class='bal-div'>" + balloonContentBody + "</div>"; | ||
| + | } | ||
| + | content+="</div>"; | ||
| + | |||
| + | parent.innerHTML = content; | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | //ПРИМЕНЕНИЕ МАКЕТА К КЛАСТЕРУ | ||
| + | cluster.options.set({ | ||
| + | balloonContentLayout: myClusterBalloonLayout, | ||
| + | }) | ||
| + | |||
| + | |||
| + | // регулярки для замен входящей инфы | ||
| + | var re= /\s/g, | ||
| + | regimg = /href=".*?"/g, | ||
| + | //преобразование названия для использоваиня в ссылке | ||
| + | ref = val4.replace(re,'_'); | ||
| + | val2 = val2.replace(regimg, 'href=\"http://draft.hayazg.info/' + ref + '\"'); | ||
| + | //создание переменной для содержимого балуна | ||
| + | var tab_content = val2 + '<br>' + val4; | ||
//создание переменной для геокодинга | //создание переменной для геокодинга | ||
var mygeocod = ymaps.geocode(val, {results:1}); | var mygeocod = ymaps.geocode(val, {results:1}); | ||
| Строка 15: | Строка 65: | ||
var plac = new ymaps.Placemark | var plac = new ymaps.Placemark | ||
(point, | (point, | ||
| − | { | + | { |
| − | {// | + | // данные в заголовке, уже использованы в tab_content |
| − | + | // clusterCaption: val4, | |
| − | + | balloonContentBody: tab_content | |
| + | }, | ||
| + | { | ||
| + | // применение шаблона макета | ||
| + | // balloonContentBodyLayout: myBalloonContentBodyLayout, | ||
| + | balloonContentLayout: myBalloonContentLayout, | ||
| + | // preset: 'twirl#nightStretchyIcon' | ||
| + | } | ||
); | ); | ||
//добавление маркеров в кластерер | //добавление маркеров в кластерер | ||
| Строка 28: | Строка 85: | ||
) | ) | ||
} | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
//центральная функция | //центральная функция | ||
| − | function ymInit( | + | function ymInit(S_all) |
{ | { | ||
| − | + | //обработка события наведения на пункты балуна | |
| − | { | + | jQuery(function() { |
| − | + | jQuery("#var").live("mouseover", function(e){ | |
| − | + | jQuery("#clusterBody").html(this.value); | |
| − | + | ||
| + | }); | ||
| + | }) | ||
// Создаем кластеризатор со стандартными иконками | // Создаем кластеризатор со стандартными иконками | ||
cluster = new ymaps.Clusterer();//{clusterIcons : clusterIcons}); | cluster = new ymaps.Clusterer();//{clusterIcons : clusterIcons}); | ||
| Строка 66: | Строка 118: | ||
myMap.behaviors.enable('scrollZoom'); | myMap.behaviors.enable('scrollZoom'); | ||
| − | + | //обработка входящей информации | |
| − | / | + | /* |
| + | A_all[i][0]-картинка | ||
| + | A_all[i][1]-адрес | ||
| + | A_all[i][2]-доп инфа. | ||
| + | A_all[i][3]-название здания-памятника | ||
| + | */ | ||
| + | S_all=S_all.toString(); | ||
| + | A_all=S_all.split('‼'); | ||
| + | for (var i=0;i<A_all.length; i++) | ||
| + | {A_all[i]=A_all[i].split('|');} | ||
| + | |||
//последовательный геокодинг и добавление адресов на карту в кластере | //последовательный геокодинг и добавление адресов на карту в кластере | ||
| − | for (var i=0; i < | + | for (var i=0; i < A_all.length; i++) |
| − | { | + | { |
| − | ymGeocod( | + | if (A_all[i][2]==null){continue;} |
| + | else{ | ||
| + | ymGeocod(A_all[i][1], A_all[i][0], A_all[i][2], A_all[i][3]); | ||
| + | } | ||
} | } | ||
| + | } | ||
| + | |||
| + | // Добавляем почту в мобильный подвал Vector | ||
| + | if ( mw.config.get( 'skin' ) === 'vector' && window.innerWidth <= 768 ) { | ||
| + | $( function() { | ||
| + | var emailHtml = '<div class="vector-mobile-email">' + | ||
| + | '<a href="mailto:email@example.com">📧 email@example.com</a>' + | ||
| + | '</div>'; | ||
| + | |||
| + | // Вставляем перед подвалом | ||
| + | $('#footer').prepend(emailHtml); | ||
| + | } ); | ||
} | } | ||
Текущая версия на 11:54, 25 сентября 2025
/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждой странице */
//получает адреса, обрабатывает и отображает точки на карте
function ymGeocod(val, val2, val3, val4)
{
/*
val -адрес
val2-картинка
val3-статус объекта
val4-название объекта
*/
//МАКЕТ ДЛЯ БАЛУНА ОДНОЙ ТОЧКИ
// Макет заголовка балуна, в нем сразу и данные
var myBalloonContentLayout = ymaps.templateLayoutFactory.createClass('<div class="bal-div"> $[properties.clusterCaption]<br /><br />$[properties.balloonContentBody]</div>');
// Создание макета основного содержимого контента балуна.
// var myBalloonContentBodyLayout = ymaps.templateLayoutFactory.createClass(
// '$[properties.clusterCaption]<br /><br />$[properties.balloonContentBody]<br /><br />', {
// build: function () {
// this.constructor.superclass.build.call(this);
// }
// });
//МАКЕТ ДЛЯ БАЛУНА КЛАСТЕРА (НЕСКОЛЬКИХ ТОЧЕК)
var myClusterBalloonLayout =ymaps.templateLayoutFactory.createClass("", {
build: function () {
geoObjects = this.getData().properties.get('geoObjects');
var parent = this.getParentElement(),
content = "<div class='bal-div-home'>";
for (var i = 0, l = geoObjects.length; i < l; i++)
{
balloonContentBody = geoObjects[i].properties.get("balloonContentBody");
content += "<div class='bal-div'>" + balloonContentBody + "</div>";
}
content+="</div>";
parent.innerHTML = content;
}
});
//ПРИМЕНЕНИЕ МАКЕТА К КЛАСТЕРУ
cluster.options.set({
balloonContentLayout: myClusterBalloonLayout,
})
// регулярки для замен входящей инфы
var re= /\s/g,
regimg = /href=".*?"/g,
//преобразование названия для использоваиня в ссылке
ref = val4.replace(re,'_');
val2 = val2.replace(regimg, 'href=\"http://draft.hayazg.info/' + ref + '\"');
//создание переменной для содержимого балуна
var tab_content = val2 + '<br>' + val4;
//создание переменной для геокодинга
var mygeocod = ymaps.geocode(val, {results:1});
//после обработки делаем функцию...
mygeocod.then(
function(res){
if(res.geoObjects.getLength()) {
//координаты точки для маркера
var point = res.geoObjects.get(0).geometry.getCoordinates();
//plac- маркер с контентом, его передать в кластерер
var plac = new ymaps.Placemark
(point,
{
// данные в заголовке, уже использованы в tab_content
// clusterCaption: val4,
balloonContentBody: tab_content
},
{
// применение шаблона макета
// balloonContentBodyLayout: myBalloonContentBodyLayout,
balloonContentLayout: myBalloonContentLayout,
// preset: 'twirl#nightStretchyIcon'
}
);
//добавление маркеров в кластерер
cluster.add(plac);
//отображение кластерера на карте
myMap.geoObjects.add(cluster);
}
}
)
}
//центральная функция
function ymInit(S_all)
{
//обработка события наведения на пункты балуна
jQuery(function() {
jQuery("#var").live("mouseover", function(e){
jQuery("#clusterBody").html(this.value);
});
})
// Создаем кластеризатор со стандартными иконками
cluster = new ymaps.Clusterer();//{clusterIcons : clusterIcons});
//создание кластеризатора с пользовательскими иконками
//cluster = new ymaps.Clusterer({clusterIcons : clusterIcons});
// Создание экземпляра карты myMap и его привязка к контейнеру с
// заданным id ("map")
myMap = new ymaps.Map('map', {
center: [47.23,39.73],
zoom: 10,
});
//добавление инструментов для просмотра
myMap.controls
// Кнопка изменения масштаба
.add('zoomControl')
// Список типов карты
.add('typeSelector')
// Стандартный набор кнопок
.add('mapTools');
//скролл колесиком
myMap.behaviors.enable('scrollZoom');
//обработка входящей информации
/*
A_all[i][0]-картинка
A_all[i][1]-адрес
A_all[i][2]-доп инфа.
A_all[i][3]-название здания-памятника
*/
S_all=S_all.toString();
A_all=S_all.split('‼');
for (var i=0;i<A_all.length; i++)
{A_all[i]=A_all[i].split('|');}
//последовательный геокодинг и добавление адресов на карту в кластере
for (var i=0; i < A_all.length; i++)
{
if (A_all[i][2]==null){continue;}
else{
ymGeocod(A_all[i][1], A_all[i][0], A_all[i][2], A_all[i][3]);
}
}
}
// Добавляем почту в мобильный подвал Vector
if ( mw.config.get( 'skin' ) === 'vector' && window.innerWidth <= 768 ) {
$( function() {
var emailHtml = '<div class="vector-mobile-email">' +
'<a href="mailto:email@example.com">📧 email@example.com</a>' +
'</div>';
// Вставляем перед подвалом
$('#footer').prepend(emailHtml);
} );
}