Применить фильтр к точкам на Яндекс карте
Друзья, у меня есть две точки на яндекс карте
myPlacemarkWithContent = new ymaps.Placemark([55.661574, 37.573856], { hintContent: 'Собственный значок метки с контентом', //balloonContent: 'А эта — новогодняя', iconContent: '0,62 Га 15230 мВІ' }, { // Опции. // Необходимо указать данный тип макета. iconLayout: 'default#imageWithContent', // Своё изображение иконки метки. iconImageHref: 'images/ball.png', // Размеры метки. i iconImageSize: [72, 54], // Смещение левого верхнего угла иконки относительно // её "ножки" (точки привязки). iconImageOffset: [0, -54], // Смещение слоя с содержимым относительно слоя с картинкой. iconContentOffset: [5, 5], // Макет содержимого. iconContentLayout: MyIconContentLayout }); myPlacemarkWithContent1 = new ymaps.Placemark([55.771599, 37.773877], { hintContent: 'Собственный значок метки с контентом', //balloonContent: 'А эта — новогодняя', iconContent: '0,62 Га 15230 мВІ' }, { // Опции. // Необходимо указать данный тип макета. iconLayout: 'default#imageWithContent', // Своё изображение иконки метки. iconImageHref: 'images/ball.png', // Размеры метки. iconImageSize: [72, 54], // Смещение левого верхнего угла иконки относительно // её "ножки" (точки привязки). iconImageOffset: [0, -54], // Смещение слоя с содержимым относительно слоя с картинкой. iconContentOffset: [5, 5], // Макет содержимого. iconContentLayout: MyIconContentLayout }); Как мне к ним применить фильтр: objectManager = new ymaps.ObjectManager({ // Чтобы метки начали кластеризоваться, выставляем опцию. clusterize: true, // ObjectManager принимает те же опции, что и кластеризатор. gridSize: 64, // Макет метки кластера pieChart. clusterIconLayout: "default#pieChart" }); myMap.geoObjects.add(objectManager); // Создадим 5 пунктов выпадающего списка. var listBoxItems = ['Школа', 'Аптека', 'Магазин', 'Больница', 'Бар'] .map(function (title) { return new ymaps.control.ListBoxItem({ data: { content: title }, state: { selected: true } }) }), reducer = function (filters, filter) { filters[filter.data.get('content')] = filter.isSelected(); return filters; }, // Теперь создадим список, содержащий 5 пунктов. listBoxControl = new ymaps.control.ListBox({ data: { content: 'Фильтр', title: 'Фильтр' }, items: listBoxItems, state: { // Признак, развернут ли список. expanded: true, filters: listBoxItems.reduce(reducer, {}) } }); myMap.controls.add(listBoxControl); // Добавим отслеживание изменения признака, выбран ли пункт списка. listBoxControl.events.add(['select', 'deselect'], function (e) { var listBoxItem = e.get('target'); var filters = ymaps.util.extend({}, listBoxControl.state.get('filters')); filters[listBoxItem.data.get('content')] = listBoxItem.isSelected(); listBoxControl.state.set('filters', filters); }); var filterMonitor = new ymaps.Monitor(listBoxControl.state); filterMonitor.add('filters', function (filters) { // Применим фильтр. objectManager.setFilter(getFilterFunction(filters)); }); function getFilterFunction(categories) { return function (obj) { var content = obj.properties.balloonContent; return categories[content] } } $.ajax({ url: "data.json" }).done(function (data) { objectManager.add(data); }); } Помогите друзья)) |
Часовой пояс GMT +3, время: 10:49. |