osg::Node* makePlaceNode(FilterContext& context, Feature* feature, const Style& style, NumericExpression& priorityExpr ) { osg::Vec3d center = feature->getGeometry()->getBounds().center(); AltitudeMode mode = ALTMODE_ABSOLUTE; const AltitudeSymbol* alt = style.getSymbol<AltitudeSymbol>(); if (alt && (alt->clamping() == AltitudeSymbol::CLAMP_TO_TERRAIN || alt->clamping() == AltitudeSymbol::CLAMP_RELATIVE_TO_TERRAIN) && alt->technique() == AltitudeSymbol::TECHNIQUE_SCENE) { mode = ALTMODE_RELATIVE; } GeoPoint point(feature->getSRS(), center.x(), center.y(), center.z(), mode); PlaceNode* node = new PlaceNode(0L, point, style, context.getDBOptions()); if ( !priorityExpr.empty() ) { AnnotationData* data = new AnnotationData(); data->setPriority( feature->eval(priorityExpr, &context) ); node->setAnnotationData( data ); } return node; }
osg::Node* makePlaceNode(const FilterContext& context, const Feature* feature, const Style& style, NumericExpression& priorityExpr ) { osg::Vec3d center = feature->getGeometry()->getBounds().center(); GeoPoint point(feature->getSRS(), center.x(), center.y()); PlaceNode* placeNode = new PlaceNode(0L, point, style, context.getDBOptions()); if ( !priorityExpr.empty() ) { AnnotationData* data = new AnnotationData(); data->setPriority( feature->eval(priorityExpr, &context) ); placeNode->setAnnotationData( data ); } return placeNode; }