2013-11-23 5 views
0

Я использую gwt openlayers для рисования некоторых линий на карте. Я хотел бы изменить внешний вид линии рисования. Я заметил, что класс PathHandler имеет метод setStyle, но стиль установки с использованием этого метода не меняет внешний вид линии.GWT openlayers, DrawFeature line style

private DrawFeature createDrawFeature() { 
    DrawFeatureOptions options = new DrawFeatureOptions(); 
    options.onFeatureAdded(getStyle()); 
    PathHandler handler = new PathHandler(); 
    handler.setStyle(style); 
    return new DrawFeature(layer, handler, options); 
} 
private Style getStyle() { 
    Style style = new Style(); 
    style.setStrokeColor("#ffffff"); 
    style.setStrokeWidth(2.0); 
    return style; 
} 

Я пытался установить разные варианты стиля, но эффекта не было. Кто-нибудь знает, как изменить внешний вид линии DrawFeature?

ответ

1

Обработчик, выполняющий чертеж (точка, путь или многоугольник), отвечает за стиль ваших эскизов (функции до их завершения).

Так стиль эскизы вы делаете:

//Create a style. We want a blue dashed line. 
    final Style drawStyle = new Style(); //create a Style to use 
    drawStyle.setFillColor("white"); 
    drawStyle.setGraphicName("x"); 
    drawStyle.setPointRadius(4); 
    drawStyle.setStrokeWidth(3); 
    drawStyle.setStrokeColor("#66FFFF"); 
    drawStyle.setStrokeDashstyle("dash"); 

    //create a StyleMap using the Style 
    StyleMap drawStyleMap = new StyleMap(drawStyle); 

    //Create PathHanlderOptions using this StyleMap 
    PathHandlerOptions phOpt = new PathHandlerOptions(); 
    phOpt.setStyleMap(drawStyleMap); 

    //Create DrawFeatureOptions and set the PathHandlerOptions (that have the StyleMap, that have the Style we wish) 
    DrawFeatureOptions drawFeatureOptions = new DrawFeatureOptions(); 
    drawFeatureOptions.setHandlerOptions(phOpt); 

    PathHandler pathHanlder = new PathHandler(); 

    // Create the DrawFeature control to draw on the map, and pass the DrawFeatureOptions to control the style of the sketch 
    final DrawFeature drawLine = new DrawFeature(vectorLayer, pathHanlder, drawFeatureOptions); 
    map.addControl(drawLine); 
    drawLine.activate(); 

Я также добавил пример она продемонстрирует: http://demo.gwt-openlayers.org/gwt_ol_showcase/GwtOpenLayersShowcase.html?example=DrawFeature%20style%20example

+0

Спасибо, это работает отлично, но что о последней строке (я имею в виду, когда ничья сделанный)? У него все еще есть старый тонкий оранжевый стиль. –

+0

@UP. OK Я нашел способ добиться этого при помощи onFeatureAdded в настройках drawfeature \t общественного недействительными onFeatureAdded (VectorFeature vectorFeature) { \t \t vectorFeature.setStyle (GetStyle()); \t \t vectorFeature.redrawParent(); \t} –

+1

Сокол, возможно, работает, но немного за бортом. Вы должны просто использовать метод setStyle или setStyleMap для векторного слоя. Таким образом вам просто нужно установить стиль один раз на слой. Нечто вроде Векторный vectorLayer = новый вектор («Векторный слой»); final стиль drawStyle = новый стиль(); // создаем стиль для использования drawStyle.setFillColor («белый»); drawStyle.setGraphicName ("x"); drawStyle.setPointRadius (4); drawStyle.setStrokeWidth (3); drawStyle.setStrokeColor ("# 66FFFF"); drawStyle.setStrokeDashstyle ("тире"); vectorLayer.setStyle (drawStyle); – Knarf