Improve GIS for release
[gpl/argeo-suite.git] / org.argeo.app.geo / src / org / argeo / app / geo / ux / OpenLayersMapPart.java
index c66ed3a03164760ec6aa61db61273b68d677e48a..a856bccd188fd1b9ed8d4fe5893aee5a6cf6e53f 100644 (file)
@@ -1,14 +1,21 @@
 package org.argeo.app.geo.ux;
 
+import java.util.Map;
+
 import org.argeo.app.ol.AbstractOlObject;
 import org.argeo.app.ol.Layer;
 import org.argeo.app.ol.OlMap;
 import org.argeo.app.ol.TileLayer;
 import org.argeo.app.ol.VectorLayer;
 import org.argeo.app.ux.js.JsClient;
+import org.locationtech.jts.geom.Envelope;
 
+/**
+ * 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);
@@ -24,17 +31,25 @@ public class OpenLayersMapPart extends AbstractGeoJsObject {
                executeMethod(getMethodName(), JsClient.escapeQuotes(xml));
        }
 
-       public void applyStyle(String layerName, String styledLayerName) {
-               executeMethod(getMethodName(), layerName, styledLayerName);
+       public void setCenter(Double lat, Double lon) {
+               executeMethod(getMethodName(), lat, lon);
+       }
+
+       public void fit(double[] extent, Map<String, Object> options) {
+               executeMethod(getMethodName(), extent, options);
+       }
+
+       public void fit(Envelope extent, Map<String, Object> options) {
+               fit(new double[] { extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY() }, options);
        }
 
-       public void applyBboxStrategy(String layerName) {
-               executeMethod(getMethodName(), layerName);
+       public void applyStyle(String layerName, String styledLayerName) {
+               executeMethod(getMethodName(), layerName, styledLayerName);
        }
 
        public Layer getLayer(String name) {
                // TODO deal with not found
-               String reference = "getLayerByName('" + name + "')";
+               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))) {
@@ -43,4 +58,9 @@ public class OpenLayersMapPart extends AbstractGeoJsObject {
                        return new Layer(getJsClient(), reference);
                }
        }
+
+       public String getMapPartName() {
+               return mapPartName;
+       }
+
 }