1919import javafx .stage .Screen ;
2020import javafx .stage .Stage ;
2121import lombok .extern .slf4j .Slf4j ;
22+ import javafx .scene .control .Button ;
23+
24+ import java .util .ArrayList ;
25+ import java .util .List ;
2226
2327/**
2428 * @author Matt Akbarian (@makbn)
2731public class LeafletTestJFX extends Application {
2832
2933 public static final String MAP_API_KEY = "rNGhTaIpQWWH7C6QGKzF" ;
34+ public static final List <JLObject <?>> elements = new ArrayList <>();
3035
3136 @ Override
3237 public void start (Stage stage ) {
@@ -41,8 +46,15 @@ public void start(Stage stage) {
4146 .lng (-114.07 )
4247 .build ())
4348 .build ();
49+
50+ Button deleteButton = new Button ("Delete Elements" );
4451 //creating a window
4552 AnchorPane root = new AnchorPane (map );
53+ root .getChildren ().add (deleteButton );
54+ AnchorPane .setRightAnchor (deleteButton , 24.0 );
55+ AnchorPane .setBottomAnchor (deleteButton , 24.0 );
56+
57+
4658 root .setBackground (Background .EMPTY );
4759 root .setMinHeight (JLProperties .INIT_MIN_HEIGHT_STAGE );
4860 root .setMinWidth (JLProperties .INIT_MIN_WIDTH_STAGE );
@@ -76,6 +88,13 @@ public void start(Stage stage) {
7688 loadDemoElement (map );
7789 }
7890 });
91+
92+ deleteButton .setOnAction (event -> {
93+ elements .stream ()
94+ .filter (JLObjectBase .class ::isInstance )
95+ .map (JLObjectBase .class ::cast )
96+ .forEach (JLObjectBase ::remove );
97+ });
7998 }
8099
81100 private void loadDemoElement (JLMapView map ) {
@@ -108,29 +127,31 @@ private void loadDemoElement(JLMapView map) {
108127 });
109128
110129 calgaryMarker .setOnActionListener (getListener ());
130+ elements .add (calgaryMarker );
111131
112- map .getVectorLayer ()
132+ elements . add ( map .getVectorLayer ()
113133 .addCircleMarker (JLLatLng .builder ()
114134 .lat (51.0447 )
115135 .lng (-114.0719 )
116- .build ());
136+ .build ())) ;
117137
118- map .getVectorLayer ()
138+ elements . add ( map .getVectorLayer ()
119139 .addCircle (JLLatLng .builder ()
120140 .lat (35.63 )
121141 .lng (51.45 )
122- .build (), 30000 , JLOptions .DEFAULT );
142+ .build (), 30000 , JLOptions .DEFAULT )) ;
123143
124144 // JLImageOverlay demo: Eiffel Tower image over Paris
125145 JLBounds eiffelBounds = JLBounds .builder ()
126146 .southWest (JLLatLng .builder ().lat (47.857 ).lng (3.293 ).build ())
127147 .northEast (JLLatLng .builder ().lat (49.860 ).lng (1.298 ).build ())
128148 .build ();
129- map .getUiLayer ().addImage (
149+
150+ elements .add (map .getUiLayer ().addImage (
130151 eiffelBounds ,
131152 "https://img.favpng.com/1/24/8/eiffel-tower-eiffel-tower-illustrated-landmark-L5szYqrZ_t.jpg" ,
132153 JLOptions .DEFAULT
133- );
154+ )) ;
134155
135156 // map zoom functionalities
136157 map .getControlLayer ().setZoom (3 );
@@ -149,6 +170,14 @@ private void loadDemoElement(JLMapView map) {
149170 .build ());
150171
151172
173+ elements .add (geoJsonObject );
174+ geoJsonObject .addContextMenu ().addItem ("Remove" )
175+ .setOnMenuItemListener (selectedItem -> {
176+ if ("remove" .equalsIgnoreCase (selectedItem .getId ())) {
177+ geoJsonObject .remove ();
178+ }
179+ });
180+
152181 log .info ("geojson loaded! id: {}" , geoJsonObject .getJLId ());
153182 }
154183
@@ -171,7 +200,7 @@ private void addMultiPolyline(JLMapView map) {
171200 new JLLatLng (42.51 , 20.047 )
172201 };
173202
174- map .getVectorLayer ().addMultiPolyline (verticesT );
203+ elements . add ( map .getVectorLayer ().addMultiPolyline (verticesT ) );
175204 }
176205
177206 private void addPolyline (JLMapView map ) {
@@ -181,7 +210,7 @@ private void addPolyline(JLMapView map) {
181210 new JLLatLng (51.51 , -0.047 )
182211 };
183212
184- map .getVectorLayer ().addPolyline (vertices );
213+ elements . add ( map .getVectorLayer ().addPolyline (vertices ) );
185214 }
186215
187216 private void addPolygon (JLMapView map ) {
@@ -211,7 +240,9 @@ private void addPolygon(JLMapView map) {
211240 new JLLatLng (45 , -104.05 ),
212241 new JLLatLng (41 , -104.05 )
213242 };
214- map .getVectorLayer ().addPolygon (vertices ).setOnActionListener ((source , event ) ->
243+ JLPolygon polygon = map .getVectorLayer ().addPolygon (vertices );
244+ polygon .setOnActionListener ((source , event ) ->
215245 log .info ("{} event for: {}" , event .action (), source ));
246+ elements .add (polygon );
216247 }
217248}
0 commit comments