Cesium - Размещение рекламных щитов/булавок на карте на полигонах с установленным значением extrudedHeight

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

Позже, после их выбора, я добавляю рекламный щит с собственным изображением булавки на карте.

//Get position of selected entity and add billboard at same position

var mPos = pCoords.positions[0];

var selectedPin = viewer.entities.add({

    name : 'selBoutique',
    position : mPos,
    billboard : {
        image : './img/marker.png',
        verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
        eyeOffset: new Cesium.Cartesian3(0, 4, 0)
    }

});

Я устанавливаю начало координат по вертикали снизу, чтобы обеспечить согласованность отображения, и экспериментировал со смещением, чтобы найти параметр, который хорошо работает для зданий разной высоты в 3D-виде.

Есть ли какие-либо другие факторы, которые я должен учитывать при попытке добиться положения для этих булавок, которое никогда не блокируется зданиями разной высоты? Я попытался установить значение смещения динамически в зависимости от высоты здания. Возможно, я поиграю с этим еще немного в то же время.

Скриншоты:

скриншот под углом

скриншот вида сверху


person Emmanuel Buckshi    schedule 10.11.2016    source источник
comment
Можете ли вы добавить скриншот?   -  person emackey    schedule 10.11.2016
comment
Безусловно! Добавлен.   -  person Emmanuel Buckshi    schedule 10.11.2016
comment
В дополнение к Cesium.VerticalOrigin.BOTTOM попробуйте изменить фактическое положение булавки на высоту здания. По сути, расположите штифт в центре крыши здания, а не на первом этаже. Отключите смещение глаза, но сохраните VerticalOrigin.Bottom.   -  person emackey    schedule 10.11.2016
comment
Ты человек! Вы сделали это снова. Большое спасибо :) Это было проще, чем я думал. Пожалуйста, напишите ответ, чтобы я мог отметить его как правильный!   -  person Emmanuel Buckshi    schedule 11.11.2016


Ответы (1)


Измените фактическое положение булавки на высоту здания. По сути, расположите штифт в центре крыши здания, а не на первом этаже. Затем выключите eyeOffset, но сохраните настройку VerticalOrigin.BOTTOM.

person emackey    schedule 10.11.2016
comment
Это определенно отвечает на вопрос. Однако у меня возникла последующая проблема, которая может быть связана, а может и не быть связана с тем, что добавление рекламного щита на вершине моего здания приводит к изменению формы здания. Конкретно вырезается участок полигона. С более высокими зданиями здание становится выше и меняет форму. Должен ли я начать новый вопрос со скриншота? - person Emmanuel Buckshi; 11.11.2016
comment
Похоже на issue #2130. Если вы предприимчивы, попробуйте создать ветку billboard-transparency и посмотрите, будет ли она работать лучше. Будет небольшое снижение производительности при большом количестве выводов, но это должно решить проблему. - person emackey; 11.11.2016
comment
Извините за задержку. Это похоже на очень похожую проблему. Тем временем мой клиент выбрал другое решение, но я стараюсь построить эту ветку в свободное время и сообщить о своих выводах. Спасибо еще раз :) - person Emmanuel Buckshi; 19.11.2016