Darstellung von Text auf MapContext von GeoTools

gordonsky

Mitglied
Hallo,

ich steh gerade etwas auf dem Schlauch. ich habe gerade ein Projekt in dem ich eine Karte darstellen muss. dazu verwende ich Geotools um diese darzustellen.
die einfachen Geometriene sind auch alles fertig. jedoch hapert es bei mir nun mit den Texten.

Diese sollen mit Höhe und Drehung natürlich veränderbar sein.

Kann mir dazu jemand unter die Arme greifen?
 
ich bin mitlerweie schon so schlau das es mit den TextSymbolizer gehen soll.
folgenden Code habe ich dazu gefunden. jedoch weiß ich nicht wie ich diesen nun in mein MapContext bekomme.
Java:
StyleBuilder builder = new StyleBuilder();
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
int offset = 10;

TextSymbolizer textSymbolizer = builder.createTextSymbolizer(Color.black, builder.createFont("Arial", 10), "CELL");
Expression deg2rad = ff.literal(Math.PI/180);
Expression angle = ff.multiply(deg2rad, ff.property("azm"));
Expression x = ff.multiply(ff.function("cos", angle),ff.literal(offset));
Expression y = ff.multiply(ff.function("sin", angle),ff.literal(offset));
Displacement off = builder.createDisplacement(x, y);
AnchorPoint anchorPt = builder.createAnchorPoint(0, 0);//centre on point
LabelPlacement pointPlacement = builder.createPointPlacement(anchorPt , off, ff.literal(0));
textSymbolizer.setLabelPlacement(pointPlacement );

die Linien habe ich einfach als SimpleFeature in einer SimpleFeatureCollection geschrieben, welche ich dann das MapContent hinzufüge.
dieser schritt fehlt mir halt bei den Texten.
 
so vielelicht hilft mein aktueller Stand weiter.
ich habe die Textkoordinaten als Punkte eingeladen. diese wurden als Feature umgewandelt worin dann auch der Text enthalten ist welcher eigentlich angezeigt werden sollte.
Java:
    private void importText(ArrayList<Text> list) throws SchemaException {

        SimpleFeatureType TYPE = DataUtilities.createType("Location", "location:Point,text:String,layer:String");

        
        SimpleFeatureCollection collection = FeatureCollections.newCollection();
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
        SimpleFeatureBuilder featureBuilder = null;

        for (int i = 0; i < list.size(); i++) {
            featureBuilder = new SimpleFeatureBuilder(TYPE);
            double x = list.get(i).p.x;
            double y = list.get(i).p.y;
            String text = list.get(i).inhalt;
            String layer = list.get(i).layer;
//            double dreh = list.get(i).drehung;

            com.vividsolutions.jts.geom.Point point = geometryFactory.createPoint(new Coordinate(x, y));

            featureBuilder.add(point);
            featureBuilder.add(text);
            featureBuilder.add(layer);
            // featureBuilder.add(dreh);

            SimpleFeature feature = featureBuilder.buildFeature(null);
            if (layer.toLowerCase().contains("-bez")) {
                collection.add(feature);
            }

        }

        Style style = SLD.createPointStyle("circle", Color.black, Color.BLUE, 1f, 0.5f);
        map.addLayer(collection, style);
        setMapContext(map);

    }
die puntke habe ich nun schon. nun müssen "nur noch" die texte mit entsprechender drehung und fester Größe angezeigt werden. wie und wo verbaue ich nun diesen Textstyle?
 

Zurück
Oben