MediaWiki:Common.js — различия между версиями

Материал из Энциклопедия фонда «Хайазг»
Перейти к: навигация, поиск
(Новая страница: «/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждо...»)
 
 
(не показано 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,  
               {balloonContent:val2},
+
               {
               {//здесь параметры картинок для маркеров
+
                // данные в заголовке, уже использованы в tab_content
              /*iconImageHref:'plac.png', iconImageSize: [50,42]*/
+
                // clusterCaption: val4,
              }
+
                balloonContentBody: tab_content
 +
              },
 +
               {
 +
                        // применение шаблона макета
 +
                        // balloonContentBodyLayout: myBalloonContentBodyLayout,
 +
                        balloonContentLayout: myBalloonContentLayout,
 +
                        // preset: 'twirl#nightStretchyIcon'
 +
                        }
 
             );
 
             );
 
           //добавление маркеров в кластерер
 
           //добавление маркеров в кластерер
Строка 28: Строка 85:
 
     )
 
     )
 
}
 
}
// // Удаление всех меток с карты
 
// function ymDeleteMarker () {
 
//  // Удаляем все  метки из кластера
 
//  cluster.removeAll();
 
//  // Удаляем кластер с карты
 
//  myMap.geoObjects.remove(cluster);
 
// }
 
 
//центральная функция             
 
//центральная функция             
function ymInit(adresses)
+
function ymInit(S_all)
 
{
 
{
for(i in adresses)
+
//обработка события наведения на пункты балуна
{alert(adresses[i]);};
+
  jQuery(function() {
 
+
  jQuery("#var").live("mouseover", function(e){
ar= adresses;
+
  jQuery("#clusterBody").html(this.value);
ar2 = adresses;
+
 
 +
  });
 +
})
 
   // Создаем кластеризатор со стандартными иконками
 
   // Создаем кластеризатор со стандартными иконками
 
   cluster = new ymaps.Clusterer();//{clusterIcons : clusterIcons});
 
   cluster = new ymaps.Clusterer();//{clusterIcons : clusterIcons});
Строка 66: Строка 118:
 
   myMap.behaviors.enable('scrollZoom');
 
   myMap.behaviors.enable('scrollZoom');
  
  //удаление маркеров из кластера и с карты
+
//обработка входящей информации
   //deleteMarker();
+
/*
 +
  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 < ar.length; i++)
+
   for (var i=0; i < A_all.length; i++)
     {
+
     {  
       ymGeocod(ar[i],ar2[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]);
 +
            }
 
     }
 
     }
 
}
 
}

Текущая версия на 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]);
            }
    }
}