В настоящее время я использую Cesium для картографического приложения, и у меня есть требование иметь индикаторы состояния для каждого элемента, который я рисую (например, если предмет, который я рисую, — это самолет, тогда мне нужно иметь индикатор состояния топлива). индикатор). Я не могу использовать инструменты рисования Cesium для этого, потому что они рисуются с использованием географических местоположений, но мне нужно, чтобы мои индикаторы состояния просто располагались рядом с рекламным щитом и не удалялись от рекламного щита, когда пользователи увеличивают и уменьшают масштаб.
В документации Cesium CZML указано, что свойство «изображение» рекламного щита может принимать URI данных, поэтому я решил, что самым простым способом справиться с этим будет создание пути SVG на лету и встраивание его в свойство изображения, но когда я это сделаю это в цезии, он не проявляется. Например, я попробовал такой простой тест:
"data:image/svg+xml,<svg viewBox='0 0 40 40' height='25' width='25'
xmlns='http://www.w3.org/2000/svg'><path fill='rgb(91, 183, 91)' d='M2.379,
14.729L5.208,11.899L12.958,19.648L25.877,6.733L28.707,9.561L12.958,25.308Z'
/></svg>"
Когда это не появилось, я попробовал просто HTML и текстовые значения, например:
"data:,Hello%2C%20World!"
и:
"data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E"
но и они не появляются. Я могу получить png для отображения, если я помещу строку base64 в URI данных, а также путь к изображению, хранящемуся на сервере, но мне действительно нужно иметь возможность рисовать пользовательские изображения на лету. Я не могу использовать фиксированный набор предварительно сгенерированных изображений с различными статусами в качестве хака (я могу объяснить, почему, если кому-то нужны эти подробности :)).
Кто-нибудь знает, есть ли что-то, что я делаю неправильно, или есть ли другой способ выполнить то, что мне нужно сделать?
Изменить Просто хотел добавить, что я использую Firefox версии 29, и у него обычно нет проблем с отображением таких незакодированных встроенных SVG. На всякий случай, это одна из причин, по которой я также пытался использовать простой HTML или текст.
Edit2 Я использую потоковую передачу CZML из серверной части для отображения своих элементов. Вот простой тестовый пример, показывающий, куда я пытаюсь поместить информацию об изображении:
{
"id":"test",
"billboard" : {
"image" : "data:image/svg+xml,<svg viewBox='0 0 40 40' height='25' width='25' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(91, 183, 91)' d='M2.379,
14.729L5.208,11.899L12.958,19.648L25.877,6.733L28.707,9.561L12.958,25.308Z'
/></svg>",
"show" : [ {"boolean" : true} ]
},
"position":{
"cartographicDegrees":[0.0, 0.0, 0.0]
},
"label":{"text":"TEST"},
}
Если я помещу туда строку base64 png или путь к файлу статического изображения, все будет работать нормально.
Благодарю вас!
TextureAtlas
? - person dgiugg   schedule 22.07.2014