La base de source codes of WorldWindJava on github, classe MilStd2525TacticalSymbol remplace la méthode nommée layoutDynamicModifiers. Dans cette méthode vous pouvez voir que pour DIRECTION_OF_MOVEMENT seulement éventuellement addLine (...) est appelé (Cette méthode est implémentée dans le super calss AbstractTacticalSymbol qui ajoute seulement une ligne à une liste nommée currentLines) et seulement SPEED_LEADER_SCALE pourrait être défini et d'autres propriétés pour la direction du mouvement ne pouvait pas être modifiée à l'extérieur.
@Override
protected void layoutDynamicModifiers(DrawContext dc, AVList modifiers, OrderedSymbol osym)
{
this.currentLines.clear();
if (!this.isShowGraphicModifiers())
return;
// Direction of Movement indicator. Placed either at the center of the icon or at the bottom of the symbol
// layout.
Object o = this.getModifier(SymbologyConstants.DIRECTION_OF_MOVEMENT);
if (o != null && o instanceof Angle)
{
// The length of the direction of movement line is equal to the height of the symbol frame. See
// MIL-STD-2525C section 5.3.4.1.c, page 33.
double length = this.iconRect.getHeight();
Object d = this.getModifier(SymbologyConstants.SPEED_LEADER_SCALE);
if (d != null && d instanceof Number)
length *= ((Number) d).doubleValue();
if (this.useGroundHeadingIndicator)
{
List<? extends Point2D> points = MilStd2525Util.computeGroundHeadingIndicatorPoints(dc, osym.placePoint,
(Angle) o, length, this.iconRect.getHeight());
this.addLine(dc, Offset.BOTTOM_CENTER, points, LAYOUT_RELATIVE, points.size() - 1, osym);
}
else
{
List<? extends Point2D> points = MilStd2525Util.computeCenterHeadingIndicatorPoints(dc,
osym.placePoint, (Angle) o, length);
this.addLine(dc, Offset.CENTER, points, null, 0, osym);
}
}
}
dans la super classe AbstractTacticalSymbol, currentLines de terrain (qui contient la ligne de direction de déplacement) est utilisé dans une méthode nommée drawLines (...) qui tire ajouté des lignes de la liste mentionnée (ligne 2366 de classe). Dans la ligne 2364, vous pouvez voir que la couleur est définie sur noir.
gl.glColor4f(0f, 0f, 0f, opacity.floatValue());
Maintenant, je vous suggère d'étendre MilStd2525TacticalSymbol et faire suivant:
- étendre AbstractTacticalSymbol.Line de classe et de définir des champs pour stocker la couleur. Redéfinissez la méthode layoutDynamicModifiers et obtenez votre propre clé (par exemple DIRECTION_OF_MOVEMENT_COLOR) pour obtenir la couleur des modificateurs et utilisez cette couleur pour créer votre propre ligne et ajoutez-la à la liste currentLines (vous pouvez surcharger la méthode addLine à cette fin).
- Remplacez finalement drawLines pour utiliser la couleur du magasin dans votre propre classe Line et changez la couleur de gl avant la ligne de dessin (vous pouvez changer la couleur en noir lorsque la direction du mouvement est dessinée).
Quelle version de WorldWind utilisez-vous? c'est-à-dire 1.X, 2.0, 2.0-986, 2.1 – Igor
2.1.0. J'ai essentiellement suivi la branche master git. – stix