Я новый пользователь Open-layers 3. У меня есть веб-страница со слоями OSM, добавленными OL3, и я добавил все слои векторов (маркеры) с помощью ol.layer.Vector. Мне нужно изменить векторный слой при изменении уровня масштабирования. Пожалуйста
Openlayers 3: изменение слоев векторов при изменении уровня масштабирования
Ответы (2)
Слои имеют методы setVisible()/getVisible(), поэтому вы можете активировать их на своих слоях при определенном уровне масштабирования. Масштабирование может быть получено по событиям «moveend», после чего вы можете активировать видимость определенного слоя или нет.
Масштаб можно получить с помощью map.getView().getZoom() (вернет число, обозначающее масштаб), затем сообщите слою, который вам нужно либо показать, либо скрыть соответственно.
Слои хранятся в объекте Collection(массив) и могут быть получены с помощью вызова map.getLayers(), затем вы можете выбрать, какой из них показать или скрыть. Когда я добавляю слои, я записываю их порядок, чтобы сразу получить один.
map.getLayers().item(0) вернет первый слой, который я добавил к слоям, (1) второй и т. д.
Вы даже можете определить максимальное и минимальное разрешения непосредственно при создании векторного слоя.
класс ol.layer.Vector имеет параметры:
- minResolution: минимальное разрешение (включительно), при котором этот слой будет виден.
- maxResolution: максимальное разрешение (эксклюзивное), ниже которого этот слой будет виден.
Если вы не знаете разрешение карты, вы можете использовать метод map.getView().getResolution(), чтобы узнать его.