Полигон цезия меняет цвет при наведении курсора мыши

Мне нужно выделить многоугольник при наведении мыши и восстановить его цвет и внешний вид, как только мышь будет перемещена за пределы многоугольника.

Я пробовал это с обработчиком событий ScreenSpaceEventType.MOUSE_MOVE, но в этом случае я не могу восстановить внешний вид, когда мышь перемещается за пределы полигона.

Я пробовал https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Apps/Sandcastle/gallery/Polygons.html (http://cesiumjs.org/Cesium/Apps/Sandcastle/gallery/polygons.html)

Этот файл в Санкасле. Он имеет встроенные комментарии, такие как // For highlighting on mouseover in Sandcastle.

Но это не работает, как ожидалось.

Есть ли способ в цезии добиться этого? или я что-то упускаю?


person meen    schedule 05.01.2015    source источник
comment
// Для выделения при наведении курсора в Sandcastle. предназначен для выделения кода полигона в левой части замка из песка cesiumjs .org/Cesium/Apps/Sandcastle/ :(   -  person meen    schedule 08.01.2015
comment
Я пробовал это... Можете ли вы показать нам свой код?   -  person dgiugg    schedule 09.01.2015
comment
@dgiugg, шаги, которые я выполняю, чтобы сделать это: 1. Получить свойства и координаты выбранного многоугольника. 2. Удалите выбранный полигон. 3. Перерисуйте многоугольник другим цветом со свойствами и координатами, которые я получил на шаге 1.   -  person meen    schedule 11.01.2015
comment
TY, но дать свой код (путем редактирования вопроса) было бы понятнее! Два возражения: 1. Вам не нужно удалять полигон и отображать новый, вы можете просто использовать polygon.material.uniforms.color. 2. Вы сказали, что проблема была в том, что вы покидаете полигон мышью. Возможно проблема в обработчике событий. Но вам нужно показать нам соответствующий код, чтобы помочь нам определить проблему! ;)   -  person dgiugg    schedule 28.01.2015


Ответы (1)


Взгляните на пример "Выбор" в Sandcastle и нажмите кнопку с надписью «Выбор детализации».

Существуют разные способы выполнить то, что вы описываете, но в приведенной выше демонстрации используется Cesium CallbackProperty и обеспечивает обратный вызов, который возвращает либо обычный цвет полигона, либо цвет выделения, в зависимости от статуса «выбрано». Обратите внимание, что с помощью этого метода можно выбрать несколько перекрывающихся полигонов одновременно.

Затем обработчик перемещения мыши просто контролирует принадлежность к списку pickedEntities, а полигоны выбирают для себя подходящие цвета в зависимости от их принадлежности к этому списку.

person emackey    schedule 20.02.2015
comment
Спасибо!! Как вы сказали, есть разные способы выполнить то, что вы описываете. Можете ли вы обобщить некоторые из них? - person meen; 16.07.2016