Fix order of coordinates in BBOX
[gpl/argeo-suite.git] / org.argeo.app.geo / src / org / argeo / app / geo / ux / OpenLayersMapPart.java
index 829b343a38bccd88dffe60f99899e9e22263e4dd..e6edbf6e2861cb556fc1fb7cc9b35e3c13d19c06 100644 (file)
@@ -1,11 +1,18 @@
 package org.argeo.app.geo.ux;
 
+import org.argeo.app.ol.AbstractOlObject;
+import org.argeo.app.ol.Layer;
 import org.argeo.app.ol.OlMap;
-import org.argeo.app.ux.js.AbstractJsObject;
+import org.argeo.app.ol.TileLayer;
+import org.argeo.app.ol.VectorLayer;
 import org.argeo.app.ux.js.JsClient;
 
+/**
+ * A wrapper around an OpenLayers map, adding specific features, such as SLD
+ * styling.
+ */
 public class OpenLayersMapPart extends AbstractGeoJsObject {
-       private String mapPartName;
+       private final String mapPartName;
 
        public OpenLayersMapPart(JsClient jsClient, String mapPartName) {
                super(mapPartName);
@@ -16,4 +23,33 @@ public class OpenLayersMapPart extends AbstractGeoJsObject {
        public OlMap getMap() {
                return new OlMap(getJsClient(), getReference() + ".getMap()");
        }
+
+       public void setSld(String xml) {
+               executeMethod(getMethodName(), JsClient.escapeQuotes(xml));
+       }
+
+       public void setCenter(Double lat, Double lon) {
+               executeMethod(getMethodName(), lat, lon);
+       }
+
+       public void applyStyle(String layerName, String styledLayerName) {
+               executeMethod(getMethodName(), layerName, styledLayerName);
+       }
+
+       public Layer getLayer(String name) {
+               // TODO deal with not found
+               String reference = getReference() + ".getLayerByName('" + name + "')";
+               if (getJsClient().isInstanceOf(reference, AbstractOlObject.getJsClassName(VectorLayer.class))) {
+                       return new VectorLayer(getJsClient(), reference);
+               } else if (getJsClient().isInstanceOf(reference, AbstractOlObject.getJsClassName(TileLayer.class))) {
+                       return new TileLayer(getJsClient(), reference);
+               } else {
+                       return new Layer(getJsClient(), reference);
+               }
+       }
+
+       public String getMapPartName() {
+               return mapPartName;
+       }
+
 }