Skip to content

Commit 026d78a

Browse files
committed
fixed the issue with removing geojson. updated LeafletTestJFX with a delete all button to test the change.
1 parent cd4d580 commit 026d78a

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

jlmap-api/src/main/java/io/github/makbn/jlmap/model/builder/JLCallbackBuilder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ public JLCallbackBuilder(String elementType, String varName) {
2727
return switch (event) {
2828
case ADD, REMOVE -> """
2929
this.%3$s.on('%1$s', e => {
30-
e.sourceTarget.getElement().setAttribute('id', e.target.uuid);
30+
if (typeof e.sourceTarget.getElement === 'function'
31+
&& e.sourceTarget.getElement()
32+
&& typeof e.sourceTarget.getElement().setAttribute === 'function') {
33+
e.sourceTarget.getElement().setAttribute('id', e.target.uuid);
34+
}
3135
this.jlMapElement.$server.eventHandler('%1$s', '%2$s', e.target.uuid, this.map.getZoom(),
3236
JSON.stringify((typeof e.target.getLatLng === "function") ?
3337
e.target.getLatLng() :

jlmap-fx/src/main/java/io/github/makbn/jlmap/fx/demo/LeafletTestJFX.java

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
import javafx.stage.Screen;
2020
import javafx.stage.Stage;
2121
import 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)
@@ -27,6 +31,7 @@
2731
public 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

Comments
 (0)