]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.geo/src/org/argeo/app/geo/ux/OpenLayersMapPart.java
Introduce geometry to SVG
[gpl/argeo-suite.git] / org.argeo.app.geo / src / org / argeo / app / geo / ux / OpenLayersMapPart.java
1 package org.argeo.app.geo.ux;
2
3 import java.util.Map;
4
5 import org.argeo.app.ol.AbstractOlObject;
6 import org.argeo.app.ol.Layer;
7 import org.argeo.app.ol.OlMap;
8 import org.argeo.app.ol.TileLayer;
9 import org.argeo.app.ol.VectorLayer;
10 import org.argeo.app.ux.js.JsClient;
11 import org.locationtech.jts.geom.Envelope;
12
13 /**
14 * A wrapper around an OpenLayers map, adding specific features, such as SLD
15 * styling.
16 */
17 public class OpenLayersMapPart extends AbstractGeoJsObject {
18 private final String mapPartName;
19
20 public OpenLayersMapPart(JsClient jsClient, String mapPartName) {
21 super(mapPartName);
22 this.mapPartName = mapPartName;
23 create(jsClient, mapPartName);
24 }
25
26 public OlMap getMap() {
27 return new OlMap(getJsClient(), getReference() + ".getMap()");
28 }
29
30 public void setSld(String xml) {
31 executeMethod(getMethodName(), JsClient.escapeQuotes(xml));
32 }
33
34 public void setCenter(Double lat, Double lon) {
35 executeMethod(getMethodName(), lat, lon);
36 }
37
38 public void fit(double[] extent, Map<String, Object> options) {
39 executeMethod(getMethodName(), extent, options);
40 }
41
42 public void fit(Envelope extent, Map<String, Object> options) {
43 fit(new double[] { extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY() }, options);
44 }
45
46 public void applyStyle(String layerName, String styledLayerName) {
47 executeMethod(getMethodName(), layerName, styledLayerName);
48 }
49
50 public Layer getLayer(String name) {
51 // TODO deal with not found
52 String reference = getReference() + ".getLayerByName('" + name + "')";
53 if (getJsClient().isInstanceOf(reference, AbstractOlObject.getJsClassName(VectorLayer.class))) {
54 return new VectorLayer(getJsClient(), reference);
55 } else if (getJsClient().isInstanceOf(reference, AbstractOlObject.getJsClassName(TileLayer.class))) {
56 return new TileLayer(getJsClient(), reference);
57 } else {
58 return new Layer(getJsClient(), reference);
59 }
60 }
61
62 public String getMapPartName() {
63 return mapPartName;
64 }
65
66 }