Openlayers 3: изменение слоев векторов при изменении уровня масштабирования

Я новый пользователь Open-layers 3. У меня есть веб-страница со слоями OSM, добавленными OL3, и я добавил все слои векторов (маркеры) с помощью ol.layer.Vector. Мне нужно изменить векторный слой при изменении уровня масштабирования. Пожалуйста


person toto lebete    schedule 04.05.2015    source источник
comment
Я бы рекомендовал лучше объяснить, что вы хотите сделать. Мне нужно изменить векторный слой слишком расплывчато.   -  person erilem    schedule 05.05.2015
comment
У меня есть два файла geojson, которые представляют слои векторов. Мне нравится делать следующее: если уровень масштабирования ‹ 12 для публикации векторов в первом файле geojson, а если он > 13, мне понравилось размещать векторы из второго файла geojson. Мое желание аналогично демонстрации этой ссылки acuriousanimal.com/code/animatedCluster, но это в Openlayers 2   -  person toto lebete    schedule 05.05.2015


Ответы (2)


Слои имеют методы setVisible()/getVisible(), поэтому вы можете активировать их на своих слоях при определенном уровне масштабирования. Масштабирование может быть получено по событиям «moveend», после чего вы можете активировать видимость определенного слоя или нет.

Масштаб можно получить с помощью map.getView().getZoom() (вернет число, обозначающее масштаб), затем сообщите слою, который вам нужно либо показать, либо скрыть соответственно.

Слои хранятся в объекте Collection(массив) и могут быть получены с помощью вызова map.getLayers(), затем вы можете выбрать, какой из них показать или скрыть. Когда я добавляю слои, я записываю их порядок, чтобы сразу получить один.

map.getLayers().item(0) вернет первый слой, который я добавил к слоям, (1) второй и т. д.

person Community    schedule 05.05.2015
comment
Спасибо за ваши ответы, я смог решить проблему с помощью ol.source.Cluster. Спасибо - person toto lebete; 06.05.2015
comment
Предупреждение, я недавно начал использовать кластеры (см. другие мои вопросы) и обнаружил, что для больших наборов данных они могут быть довольно медленными, поэтому пока отключил их. Для наборов данных небольшого размера они должны подойти. - person ; 06.05.2015

Вы даже можете определить максимальное и минимальное разрешения непосредственно при создании векторного слоя.

класс ol.layer.Vector имеет параметры:

  • minResolution: минимальное разрешение (включительно), при котором этот слой будет виден.
  • maxResolution: максимальное разрешение (эксклюзивное), ниже которого этот слой будет виден.

Если вы не знаете разрешение карты, вы можете использовать метод map.getView().getResolution(), чтобы узнать его.

person favero    schedule 21.06.2016
comment
Я пробовал это, но, похоже, это не сработало. Я отправил вопрос об этом здесь. - person awe; 04.05.2017