Клуб API Карт

Как удалять метки, поставленные через setFilter, при обновлении RemoteObjectManager?

Melody Nelson
21 октября 2016, 16:14
В init получаю features из RemoteObjectManager
var objectManager = new ymaps.RemoteObjectManager('/api/maps/getFeatures&bbox=%b&zoom=%z',
{
    clusterHasBalloon: true,
    splitRequests: false,
    geoObjectOpenBalloonOnClick: false,
    clusterHideIconOnBalloonOpen: false
});

В зависимости от масштаба это либо полигоны - округа или районы, либо точки. У каждого округа и района в details есть цифра, и ее нужно выводить меткой, только когда виден этот округ/район.

Создаю коллекцию для будущих меток:

var myGeoObjects = new ymaps.GeoObjectCollection({}, {
                        preset: "islands#redCircleIcon",
                        strokeWidth: 4,
                        geodesic: true
                    });

В setFilter высчитываю центр полигона и помещаю метку в коллекцию:

cameraObjectManager.setFilter(function(object) {
    if (object.properties.details.objectType == 'DISTRICT') {
        var polygonGeometry = new ymaps.geometry.Polygon(object.geometry.coordinates);
        polygonGeometry.setMap(myMap);
        polygonGeometry.options.setParent(myMap.options);
        var pixelBounds = polygonGeometry.getBounds();
        var pixelCenter = [pixelBounds[0][0] + (pixelBounds[1][0] - pixelBounds[0][0]) / 2, (pixelBounds[1][1] - pixelBounds[0][1]) / 2 + pixelBounds[0][1]];

        var myPlacemark = new ymaps.Placemark(
            pixelCenter, {
                iconContent: object.properties.details.cameraCount,
                hintContent: object.properties.details.name,
                balloonContentBody: object.properties.details.name + ": " + object.properties.details.cameraCount + " камер"
            }, {
                preset: 'islands#blackStretchyIcon'
            }
        );

        myGeoObjects.add(myPlacemark);
    }


    return true;
});

и добавляю на карту:

myMap.geoObjects.add(objectManager);
myMap.geoObjects.add(myGeoObjects);

Как сделать так, чтобы при каждом обновлении RemoteObjectManager, предыдущие метки из этой коллекции удалялись? Сейчас, если я масштабирую с района на округ, то районные метки остаются, и добавляется окружная метка. Нужно, чтобы удалялись только они, но не метки, полученные через сам RemoteObjectManager.

Что и в какой момент нужно вызывать, чтобы эта коллекция меток очищалась и удалялась с карты при каждом зуме/запросе RemoteObjectCollection?

0 комментариев
Подписаться на комментарии к посту