OMG LOL
T h a n k . Y o u !
Well I guess I went the long way around the block on that one! :-)

Here is the much less complicated working code with the LinePlacement! Ugh

package org.geotools.demo;

import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureCollections;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;

import org.geotools.map.DefaultMapContext;
import org.geotools.map.MapContext;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.geotools.styling.AnchorPoint;
import org.geotools.styling.Displacement;
import org.geotools.styling.FeatureTypeStyle;
import org.geotools.styling.Fill;
import org.geotools.styling.Font;
import org.geotools.styling.Graphic;
import org.geotools.styling.LabelPlacement;
import org.geotools.styling.LinePlacement;
import org.geotools.styling.LineSymbolizer;
import org.geotools.styling.Mark;
import org.geotools.styling.PointSymbolizer;
import org.geotools.styling.Rule;
import org.geotools.styling.Stroke;
import org.geotools.styling.Style;
import org.geotools.styling.StyleFactory;
import org.geotools.styling.TextSymbolizer;
import org.geotools.swing.JMapFrame;

import java.awt.Color;
import java.util.*;

import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.FilterFactory;
import org.opengis.referencing.crs.CoordinateReferenceSystem;


import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateArrays;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;

public class DisplayMultiLineForced {
    
    static StyleFactory styleFactory = 
CommonFactoryFinder.getStyleFactory(null);

    static FilterFactory filterFactory = 
CommonFactoryFinder.getFilterFactory(null);
    static final CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
    static final int MAX_NAME_LENGTH = 20;

    public static void main(String[] args) throws Exception {
        SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
        typeBuilder.setName("mytype");
        typeBuilder.setCRS(crs);
        typeBuilder.add("route", LineString.class);
        typeBuilder.length(MAX_NAME_LENGTH).add("name", String.class);

        final SimpleFeatureType TYPE = typeBuilder.buildFeatureType();

        FeatureCollection<SimpleFeatureType, SimpleFeature> collection = 
FeatureCollections.newCollection();

        double x[][] = {{10, 20}, {20, 30}, {30, 40}, {40, 50}};
        double y[][] = {{10, 20}, {20, 10}, {10, 20}, {20, 10}};
        //double x[][] = {{20, 10}, {30, 20}, {40, 30}, {50, 40}};
        //double y[][] = {{20, 10}, {10, 20}, {20, 10}, {10, 20}};
        
        String[] names = {"L1", "L2", "L3", "L4" };


        GeometryFactory factory = JTSFactoryFinder.getGeometryFactory(null);
        SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(TYPE);
        ArrayList<Coordinate> coordList = new ArrayList<Coordinate>();

        for (int line = 0; line < x.length; line++) {
            for (int i = 0; i < x[line].length; i++) {
                coordList.add(new Coordinate(x[line][i], y[line][i]));
            }

            Coordinate[] coords = CoordinateArrays.toCoordinateArray(coordList);
            LineString lineString = factory.createLineString(coords);

            featureBuilder.add(lineString);
            featureBuilder.add(names[line]);
            
            collection.add(featureBuilder.buildFeature(null));
            coordList.clear();
        }

        
        
        MapContext map = new DefaultMapContext();
        map.setTitle("My beautiful lines");
        
        map.addLayer(collection, createLineStyle());

        // Now display the map
        JMapFrame.showMap(map);
    }
    
    /**
     * Create a Style to draw line features as thin blue lines
     */
    private static Style createLineStyle() {
        Stroke stroke = styleFactory.createStroke(
                filterFactory.literal(Color.BLUE),
                filterFactory.literal(1));

        /*
         * Setting the geometryPropertyName arg to null signals that we want to
         * draw the default geomettry of features
         */
        LineSymbolizer sym = styleFactory.createLineSymbolizer(stroke, null);

        //Label Formatting
        String labelField="name";
        
        Fill labelFill = 
styleFactory.createFill(filterFactory.literal(Color.black));
        
        LinePlacement placement = 
styleFactory.createLinePlacement(filterFactory.literal(5));
        Font font = styleFactory.getDefaultFont();
        font=styleFactory.createFont(filterFactory.literal("Arial"), 
filterFactory.literal("italic"), filterFactory.literal(8), 
filterFactory.literal(8));
        
        
        TextSymbolizer textSym = styleFactory.createTextSymbolizer(
                labelFill, new Font[]{font}, null, 
filterFactory.property(labelField),
        placement, null);
        
        
        Rule rule = styleFactory.createRule();
        rule.symbolizers().add(sym);
        rule.symbolizers().add(textSym);
        FeatureTypeStyle fts = styleFactory.createFeatureTypeStyle(new 
Rule[]{rule});
        Style style = styleFactory.createStyle();
        style.featureTypeStyles().add(fts);

        
        
        
        return style;
    }

    
} 




-----Original Message-----
From: "Ian Turton" <[email protected]>
Sent: Thursday, December 17, 2009 4:41pm
To: "Oliver Gottwald" <[email protected]>
Cc: "geouser" <[email protected]>
Subject: Re: [Geotools-gt2-users] How to: Make Transparent Overlay Layer?

If you use a LinePlacement instead of a PointPlacement then the label
will align with the line and save you calculating the angle for each
label.

Ian
-- 
Ian Turton

Sent from Chatham, New Jersey, United States
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to