Клуб API Карт

Создание и удаление объекта на карте

Пост в архиве.

Доброе утро.
хочу реализовать показ объектов на карте при приближении (зумировании) и удалении их с карты при отдалении.

Как проверить на существование (создан объект) ?

 

// Отслеживание изменение уровня масштабирования карты

myMap.events.add('boundschange', function (event) {

    if (event.get('newZoom') != event.get('oldZoom')) {

        if (myMap['_wb'] > 15)

            {  

                if (Вот тут надо реализовать проверку, если объект не создан то создаем его)

                {  myMap.geoObjects.add(myPlacemark);  }

            }

            else

            {

                if (Вот тут надо реализовать проверку, если объект существует то удаляем его)

                {  myMap.geoObjects.remove(myPlacemark);  }

            }

    }

}); 

 

Может есть другие варианты?

2 комментария
Всеволод Шмыров
28 января 2016, 01:26
А чем плох вариант с проверкой переменной myPlacemark ? А при удалении затирать переменную.
Или нужно проверить, что уже существующий элемент есть на карте ? Тогда можно проверять myPlacemark.getMap()

здравствуйте

можно использовать ymaps.geoQuery, таким образом

1) При объявлении метки задать ей дополнительный атрибут в свойства:

var uniqueId=123456789 //объявить повыше

var myPlacemark = new ymaps.Placemark(coords,{uniqueId:uniqueId})

ymaps.geoQuery([myPlacemark]).addToMap(myMap)

2) Если пользователь сдвигает карту и зум оказывается больше 15, то пытаемся удалить объект

ymaps.geoQuery(myMap.geoObjects).search('properties.uniqueId = '+uniqueId).removeFromMap(myMap)

3) Если пользователь сдвигает карту и зум меньше 15, то проверяем есть ли объект на карте и если нет - дорисовываем

if (ymaps.geoQuery(myMap.geoObjects).search('properies.uniqueId = '+uniqueId).getLength()==1) {

  //Объект уже есть - ничего не делаем

} else {

  //Дорисовываем объект согласно пункту 1

}