2015-04-10 5 views
0

Я тестирую добавление коллекции точек к карте с использованием API Geotools. Я следил за этим примером, насколько это возможно, Problem creating a point and adding it to FeatureCollection, поскольку код примера старый, и такие вещи, как FeatureCollections, устарели. Вместо этого я попытался использовать экземпляр DefaultFeatureCollection, и я не уверен, правильно ли я его использую, и поэтому точки не отображаются на карте. Что я делаю не так? Вот некоторые из моего кода:Почему этот код не создает слой точек в GeoTools

private void plotMarkers() { 
    final SimpleFeatureType TYPE = this.createFeatureType(); 
    final SimpleFeatureBuilder BLDR = new SimpleFeatureBuilder(TYPE); 

    DefaultFeatureCollection features = new DefaultFeatureCollection(); 

    // arbitrary start position 
    Coordinate pos = new Coordinate(0, 0); 
    final double pointSpacing = 1.0; 
    String title = "Test"; 
    features.add(creatureFeature(BLDR, pos, title)); 

    // display points on screen 
    Style style = SLD.createPointStyle("circle", Color.RED, Color.RED, 1.0f, 5.0f); 
    Layer layer = new FeatureLayer(features, style); 

    this.getMapContent().addLayer(layer); 
} 
+1

вам нужно, чтобы показать нам, по крайней мере, createFeatures метод, прежде чем мы можем помочь –

+0

Вы можете не посетить ссылку, которую я предоставил? Это на этом сайте. http://osgeo-org.1560.x6.nabble.com/Problem-creaing-a-point-and-adding-it-to-featureCollection-tp4560392p4560667.html – cj5

+0

мы также должны увидеть, как вы настроили map - o, o может быть вне карты –

ответ

1

Может быть, это может помочь вам сделать его работу

private MapContent map; 
private static Style pointStyle = SLD.createPointStyle("Circle", Color.RED, Color.RED, 0.5f, POINT_SIZE); 
public static void CreatePoints(double X, double Y){ 
     createPointLayer(); 
     createFeatures(X,Y); 
} 
static void createFeatures(double X, double Y) { 
    Point point = geometryFactory.createPoint(new Coordinate(X, Y)); 
    pointCollection.add(SimpleFeatureBuilder.build(pointType, new Object[]{point}, null)); 

    //create map layer event 
    MapLayerEvent mple = new MapLayerEvent(pointLayer, MapLayerEvent.DATA_CHANGED); 
    //create maplayer list event 
    MapLayerListEvent mplle = new MapLayerListEvent(map, pointLayer, map.layers().indexOf(pointLayer), mple); 

    okvir.mapPane.layerChanged(mplle); 
    System.out.println(MessageFormat.format("Created Point: {0}", point)); 
} 


private static void createPointLayer() { 
    if (pointType == null) { 
     pointFeatureTypeBuilder.setName("PointCreated"); 
     pointFeatureTypeBuilder.setCRS(map.getCoordinateReferenceSystem()); 
     pointFeatureTypeBuilder.add("the_geom", Point.class); 
     pointType = pointFeatureTypeBuilder.buildFeatureType(); 
     pointCollection = new DefaultFeatureCollection(null, pointType); 
    } 
    pointLayer = new FeatureLayer(pointCollection, pointStyle); 
    map.addLayer(pointLayer); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^