Я играю с osgEarth, и хотя добавлять файлы в файл .earth очень просто, я пытаюсь сделать это во время выполнения с помощью API. Я хочу позволить пользователю рисовать полигоны на карте / глобусе, поэтому мне нужно иметь возможность динамически определять геометрию и стили на основе пользовательского ввода.
Прямо сейчас я просто собираюсь реализовать статическую реализацию, чтобы выяснить, что мне нужно делать, но для жизни я не могу ничего показать. Вот мой пример кода. Я уже загрузил файл .earth, который определяет MapNode, который я использую здесь.
// Style
osgEarth::Symbology::Style shapeStyle;
shapeStyle.getOrCreate<osgEarth::Symbology::PolygonSymbol>()->fill()->color() = osgEarth::Symbology::Color::Green;
// Geometry
osgEarth::Symbology::Polygon* polygon = new osgEarth::Symbology::Polygon();
polygon->push_back(0, 0);
polygon->push_back(0, 10);
polygon->push_back(10, 10);
// Feature
osgEarth::Features::Feature* feature = new osgEarth::Features::Feature(polygon, mapNode->getMapSRS(), shapeStyle);
// Node
osgEarth::Annotation::FeatureNode* featureNode = new osgEarth::Annotation::FeatureNode(mapNode, feature);
featureNode->setStyle(shapeStyle);
featureNode->init();
mapNode->addChild(featureNode);
Этот должен нарисовать зеленый треугольник в центре карты, но я ничего не вижу. Я ошибаюсь, предполагая, что мои точки многоугольника являются географическими координатами (долгота, широта)? Это неправильно, просто создавать свой стиль и геометрию на лету, как это? Что я делаю не так?
Обновление : Кажется, это нормально работает на 3D (геоцентрической) карте, но не на 2D (проецируемой) карте, которая мне нужна.