OpenLayers: смешивание фиксированных и перетаскиваемых функций - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь создать интерфейс OpenLayers с двумя основными возможностями:

  • есть фиксированные объекты на карте, и пользователи получают дополнительную информацию на странице (не всплывающие окна на карте), когда они наводят курсор на фиксированный объект;

  • есть одна перетаскиваемая контрольная точка, по которой пользователь может перемещаться по карте.

В настоящее время каждый из них работает независимо. У меня есть два векторных слоя, один для фиксированных объектов и один для перетаскиваемых объектов. Первый слой имеет элемент управления OL.Control.SelectFeature с {hover:true}, второй - элемент управления OL.Control.DragFeature. Однако, когда я включаю элемент управления DragFeature, элемент управления SelectFeature больше не получает никаких событий при наведении курсора мыши на фиксированные функции. И наоборот, если я подниму z-индекс слоя с фиксированными объектами (как предложено здесь ), перетаскиваемый объект не может быть перемещен. Это говорит о том, что для взаимодействия с пользователем доступен только самый верхний слой.

Полагаю, здесь я совершаю довольно простую ошибку. Как разрешить пользователю взаимодействовать с функциями на двух уровнях? Или, в качестве альтернативы, есть ли лучший способ создания пользовательского интерфейса, о котором я говорил выше?

Другая альтернатива, которую я вижу, состоит в том, что я помещаю оба типа объектов на один слой и каким-то образом предотвращаю реакцию фиксированных объектов на взаимодействие перетаскивания. Однако, просматривая API OpenLayers, я не вижу никакого очевидного способа заставить элемент управления DragFeature отказаться от взаимодействия с перетаскиванием, инициированным пользователем.

1 Ответ

0 голосов
/ 12 августа 2011

ОК, нашел решение этой проблемы: элемент управления SelectFeature должен быть присоединен к обоим слоям, а затем обработчик события наведения мыши проверяет, доступна ли эта функция. Перетаскиваемый объект остается на отдельном слое, поэтому он является единственным перетаскиваемым объектом. Эта публикация помогла выяснить ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...