1) Точки, выгружаемые из базы, сохранённые кошерно и они выводятся с помощью xml файла через geoXml. В мета данных у этих объектов есть параметр type, котоырй означает что эта точка относится к какому-то определённому типу. type = id категории например.
2) Есть менюха с типами (категориями) этих самых точке в виде чекбоксов.
Задача: отфильтровать это самое дело по этим типам. По умолчанию выделены все типы. При снятии галки пытаюсь отсеить ненужное, но получается какая-то ерунда, либо ничего не работает, либо всё удаляется.
Пытался раскуривать вот это, но что-то по ходу мозгов у мну не хватает категорически. Очень прошу помощи.
Вот что я навоял в коде самой страницы есть js вот такого вида
ymaps.ready(function() {homeMap = new ymaps.Map('homeBigMap',{center: [53.419121,59.067168 ] ,zoom: 8,type: "yandex#map"});homeMap.controls.add("zoomControl").add(new ymaps.control.TypeSelector(["yandex#map","yandex#h ybrid", "yandex#publicMap"])); var balloonTpl ='<div class="mapItemRow">';balloonTpl+='<h3 class="mapItemRowTitle"><a href="$[properties.metaDataProperty.AnyMetaData.li nk]">$[properties.name]</ a></h3>'; balloonTpl+='<div class="mapItemRowLinkOuter"><a class="mapItemRowLink" href="$[properties.metaDataProperty.AnyMetaData.li nk]">Подробнее →</a></div>'; balloonTpl+='</div>';window.myObjects = ymaps.geoQuery(ymaps.geoXml.load("http://xn---74-6cda1a0bzbkdetf.xn--p1ai/pointslist ").then(function(res){.xml homeMap.geoObjects.add(res.geoObjects);res.geoObjects.options.set({ balloonContentBodyLayout: ymaps.templateLayoutFactory.createClass(balloonTpl )}); }));myObjects.addToMap(homeMap);$(document).on('change','input[name="discountType" ]', function() { var shownObjects,checked = new ymaps.GeoQueryResult(),uncheked = new ymaps.GeoQueryResult();$('input[name="discountType"]').each(function(i,it em){ if($(this).prop('checked')){checked.add(myObjects.search('properties.metaDataP roperty.AnyMetaData.type == "'+$(this).val()+'"')); }else{uncheked.add(myObjects.search('properties.metaData Property.AnyMetaData.type == "'+$(this).val()+'"')); }shownObjects = checked.add(uncheked).addToMap(homeMap);;myObjects.remove(shownObjects).removeFromMap(homeM ap); });});});
Решение
ymaps.ready(function() {homeMap = new ymaps.Map('homeBigMap',{center: [53.419121,59.067168 ] ,zoom: 11,type: "yandex#map"});homeMap.controls.add("zoomControl").add(new ymaps.control.TypeSelector(["yandex#map","yandex#h ybrid", "yandex#publicMap"])); var balloonTpl ='<div class="mapItemRow">';balloonTpl+='<h3 class="mapItemRowTitle"><a href="$[properties.metaDataProperty.AnyMetaData.li nk]">$[properties.name]</ a></h3>'; balloonTpl+='<div class="mapItemRowLinkOuter"><a class="mapItemRowLink" href="$[properties.metaDataProperty.AnyMetaData.li nk]">Подробнее →</a></div>'; balloonTpl+='</div>';window.myObjects = ymaps.geoQuery(ymaps.geoXml.load("{{ URL::route('XMLpointslist', array(strtotime(Sale::orderBy('updated_at', 'DESC')->first()->updated_at))) }}").then(function(res){res.geoObjects.options.set({ balloonContentBodyLayout: ymaps.templateLayoutFactory.createClass(balloonTpl )}); }));myObjects.addToMap(homeMap);});$(document).on('change','input[name="discountType" ]',function(){ var search = myObjects.search('properties.metaDataProperty.AnyM etaData.type == "'+$(this).val()+'"'); // ищим точки, которые соответствуют типу if(search.getLength()){ // проверяем найдено чего или нетif($(this).prop('checked')){myObjects.add(search).addToMap(homeMap); // если галка была установлена, то добавляем их на карту}else{myObjects.remove(search).removeFromMap(homeMap); // если снята, то убираем с карты}}});