MediaWiki:Common.js — различия между версиями
Материал из Энциклопедия фонда «Хайазг»
(Новая страница: «/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждо...») |
Oshlikov (обсуждение | вклад) |
||
(не показано 38 промежуточных версий 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]); | ||
+ | } | ||
} | } | ||
} | } |
Текущая версия на 23:12, 9 марта 2017
/* Размещённый здесь 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]);
}
}
}