Наконец, поскольку я не нашел ничего в OpenLayers 4 API , чтобы легко достичь своей цели, я реализовал подход вспомогательного уровня.Как и в остальных случаях, я кластеризую все кнопки в одном источнике (эти кнопки представляют объекты разных типов, поэтому каждый тип может отображаться / скрываться индивидуально).Но когда я выбираю один объект, я прекращаю кластеризацию его через geometryFunction
источника кластера и клонирую его в вспомогательном слое, отображая на карте его как один выбранный объект (с определенным стилем).
Поскольку набор нажимных кнопок может быть исключен из кластеризации, когда пользователь изменяет свою видимость, посредством подслоя, специфичного для каждого типа объекта, я создал вспомогательный слой для каждого из этих подуровней, поэтому, когда их видимость изменяется, яизменить видимость его вспомогательного слоя вместе с ним, чтобы скрыть / отобразить отдельный объект.
Чтобы достичь этого, я создал класс js
, который наследуется от ol.layer.Vector
для расширения его функциональности,чтобы добавить то, что мне нужно.
Поскольку я делал это в унаследованном коде, который является более сложным, чем цель, которую я объяснил здесь, немного сложно вставить фрагменты кода в качестве примеров, потому что мне нужно удалитьмного бесполезных строк и, возможно, это было бы неправильно.Поэтому, если у вас есть какой-то конкретный вопрос, я мог бы объяснить его лучше.