diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 23f6300..3ce35fa 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -275,9 +275,6 @@
-
- uses
-
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java
index c142d36..9ba0ced 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java
@@ -11,6 +11,7 @@ import org.gcube.application.geoportalcommon.shared.GeoportalItemReferences;
import org.gcube.application.geoportalcommon.shared.geoportal.materialization.IndexLayerDV;
import org.gcube.application.geoportalcommon.shared.geoportal.project.RelationshipDV;
import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
+import org.gcube.application.geoportalcommon.shared.gis.BoundsMap;
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION;
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MapEventType;
import org.gcube.portlets.user.geoportaldataviewer.client.events.AddLayerToMapEvent;
@@ -59,6 +60,7 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.ItemFieldsResponse;
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery;
+import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem;
import com.github.gwtbootstrap.client.ui.Popover;
import com.github.gwtbootstrap.client.ui.constants.Placement;
@@ -70,6 +72,13 @@ import com.google.gwt.core.client.ScriptInjector;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
+import com.google.gwt.json.client.JSONParser;
+import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -80,6 +89,18 @@ import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import ol.Coordinate;
+import ol.OLFactory;
+import ol.Options;
+import ol.format.GeoJson;
+import ol.format.GeoJsonFeatureOptions;
+import ol.format.GeoJsonOptions;
+import ol.geom.Geometry;
+import ol.layer.LayerOptions;
+import ol.proj.Projection;
+import ol.proj.ProjectionOptions;
+import ol.source.Vector;
+import ol.Feature;
+import ol.FeatureOptions;
/**
* Entry point classes define onModuleLoad()
.
@@ -569,6 +590,100 @@ public class GeoportalDataViewer implements EntryPoint {
doLayerActionEvent.getVisibility());
break;
+ case LOCATE_LAYER:
+
+ LayerItem layerItem = doLayerActionEvent.getLayerItem();
+
+ ol.layer.Image layer = olMap.getWmsDetailsLayerMap().get(layerItem.getName());
+
+
+
+ ExtentWrapped sourceExt = olMap.getSourceExtentForLayer(layerItem.getName());
+
+ GWT.log("extent: "+sourceExt);
+
+// BoundsMap theBBOX = new BoundsMap(layer.getExtent().getLowerLeftX(), layer.getExtent().getLowerLeftY(), layer.getExtent().getUpperRightX(), layer.getExtent().getUpperRightY(),
+// null);
+
+// Coordinate lower = OLFactory.createCoordinate(olMap.getBBOX().getLowerLeftX(), olMap.getBBOX().getLowerLeftY());
+// Coordinate lowerCoord = MapUtils.transformCoordiante(lower, MAP_PROJECTION.EPSG_4326.getName(),
+// MAP_PROJECTION.EPSG_3857.getName());
+//
+// Coordinate upper = OLFactory.createCoordinate(olMap.getBBOX().getUpperRightX(), olMap.getBBOX().getUpperRightY());
+// Coordinate upperCoord = MapUtils.transformCoordiante(upper, MAP_PROJECTION.EPSG_4326.getName(),
+// MAP_PROJECTION.EPSG_3857.getName());
+
+
+ BoundsMap theBBOX = new BoundsMap(sourceExt.getLowerLeftX(), sourceExt.getLowerLeftY(), sourceExt.getUpperRightX(), sourceExt.getUpperRightY(), null);
+ GWT.log("theBBOX: "+theBBOX);
+// if (bbox != null) {
+
+// Coordinate lower = OLFactory.createCoordinate(olMap.getBBOX().getLowerLeftX(), olMap.getBBOX().getLowerLeftY());
+// Coordinate lowerCoord = MapUtils.transformCoordiante(lower, MAP_PROJECTION.EPSG_4326.getName(),
+// MAP_PROJECTION.EPSG_3857.getName());
+//
+// Coordinate upper = OLFactory.createCoordinate(olMap.getBBOX().getUpperRightX(), olMap.getBBOX().getUpperRightY());
+// Coordinate upperCoord = MapUtils.transformCoordiante(upper, MAP_PROJECTION.EPSG_4326.getName(),
+// MAP_PROJECTION.EPSG_3857.getName());
+//
+// ew = new ExtentWrapped(lowerCoord.getX(), lowerCoord.getY(), upperCoord.getX(), upperCoord.getY());
+
+// }
+
+
+ GeoportalDataViewerServiceAsync.Util.getInstance().getWFSRequest(layerItem,
+ olMap.getProjectionCode(), null, 0, "json",
+ new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onSuccess(String wmsRequestURL) {
+ GWT.log("wmsRequestURL: "+wmsRequestURL);
+
+ RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, wmsRequestURL);
+
+ try {
+ Request response = builder.sendRequest(null, new RequestCallback() {
+ public void onError(Request request, Throwable exception) {
+ // Code omitted for clarity
+ }
+
+ public void onResponseReceived(Request request, Response response) {
+ GWT.log("GeoJSON: "+response.getText());
+
+ GeoJsonFeatureOptions fo = new GeoJsonFeatureOptions();
+ ProjectionOptions projectionOptions = new ProjectionOptions();
+ projectionOptions.setCode(MAP_PROJECTION.EPSG_3857.getName());
+ Projection fp = new Projection(projectionOptions);
+ fo.setFeatureProjection(fp);
+ fo.setDataProjection(fp);
+ GeoJsonOptions geoJsonOpt = new GeoJsonOptions();
+ geoJsonOpt.setDefaultDataProjection(fp);
+ geoJsonOpt.setFeatureProjection(fp);
+ GeoJson geoJson = OLFactory.createGeoJSON(geoJsonOpt);
+
+ Feature[] features = geoJson.readFeatures(response.getText());
+ GWT.log("features: "+features);
+ //Feature[] features = new GeoJson().readFeatures(jsonObject, projectionOptions);
+ olMap.addFeaturesAsHighlight(features);
+ }
+ });
+
+ } catch (RequestException e) {
+ // Code omitted for clarity
+ }
+
+ //olMap.locateLayer(doLayerActionEvent.getLayerItem());
+
+ }
+ });
+
+ break;
default:
break;
@@ -576,7 +691,7 @@ public class GeoportalDataViewer implements EntryPoint {
}
});
-
+
applicationBus.addHandler(ChangeMapLayerEvent.TYPE, new ChangeMapLayerEventHandler() {
@Override
@@ -686,6 +801,17 @@ public class GeoportalDataViewer implements EntryPoint {
}
+
+ /**
+ * Sets the.
+ *
+ * @param json the json
+ */
+ public static native Object toJSON(String json) /*-{
+ var jsonObj = JSON.parse(json);
+ //console.log("jsonObj: "+jsonObj);
+ return jsonObj;
+ }-*/;
// /**
// * Handler popu closer.
// *
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java
index 7741424..89b4ac6 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java
@@ -87,7 +87,7 @@ public class GeoportalDataViewerConstants {
* @param msg the msg
*/
public static native void printJs(String msg)/*-{
- console.log("js console: " + msg);
+ //console.log("js console: " + msg);
}-*/;
/**
@@ -96,7 +96,7 @@ public class GeoportalDataViewerConstants {
* @param msg the msg
*/
public static native void printJsObj(Object object)/*-{
- console.log("js obj: " + JSON.stringify(object, null, 4));
+ //console.log("js obj: " + JSON.stringify(object, null, 4));
}-*/;
/**
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerService.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerService.java
index a07e40f..05c25cf 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerService.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerService.java
@@ -15,6 +15,7 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.ItemFieldsResponse;
import org.gcube.portlets.user.geoportaldataviewer.shared.ResultSetPaginatedDataIDs;
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
+import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformationForWMSRequest;
@@ -179,4 +180,17 @@ public interface GeoportalDataViewerService extends RemoteService {
*/
GeoJSON getSpatialReference(String profileID, String projectID);
+ /**
+ * Gets the WFS request.
+ *
+ * @param layerItem the layer item
+ * @param mapSrsName the map srs name
+ * @param mapBBOX the map BBOX
+ * @param maxFeatures the max features. If 0 means all feature
+ * @param outputFormat the output format
+ * @return the WFS request
+ */
+ String getWFSRequest(LayerItem layerItem, String mapSrsName, BoundsMap mapBBOX, int maxFeatures,
+ String outputFormat);
+
}
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerServiceAsync.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerServiceAsync.java
index fac0a4d..4ceb4c4 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerServiceAsync.java
@@ -15,6 +15,7 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.ItemFieldsResponse;
import org.gcube.portlets.user.geoportaldataviewer.shared.ResultSetPaginatedDataIDs;
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
+import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformationForWMSRequest;
@@ -75,4 +76,7 @@ public interface GeoportalDataViewerServiceAsync {
void getSpatialReference(String profileID, String projectID, AsyncCallback callback);
+ void getWFSRequest(LayerItem layerItem, String mapSrsName, BoundsMap mapBBOX, int maxFeatures, String outputFormat,
+ AsyncCallback callback);
+
}
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java
index 6259a65..e397efb 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java
@@ -22,7 +22,7 @@ public class DoActionOnDetailLayersEvent extends GwtEvent entry = entrySetsIt.next();
- documentAsMap.put(entry.getKey(), entry.getValue()!=null?entry.getValue().toString():null);
+ documentAsMap.put(entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : null);
i++;
}
@@ -1539,4 +1542,30 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
return null;
}
+
+ /**
+ * Gets the WFS request.
+ *
+ * @param layerItem the layer item
+ * @param mapSrsName the map srs name
+ * @param mapBBOX the map BBOX
+ * @param maxFeatures the max features. If 0 means all feature
+ * @param outputFormat the output format
+ * @return the WFS request
+ */
+ @Override
+ public String getWFSRequest(LayerItem layerItem, String mapSrsName, BoundsMap mapBBOX, int maxFeatures,
+ String outputFormat) {
+ LOG.info("getWFSRequest called");
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("getWFSRequest parameters layerItem name: " + layerItem.getName(),
+ ", mapSrsName: " + mapSrsName + ", mapBBOX: " + mapBBOX + ", maxFeatures: " + maxFeatures
+ + ", outputFormat: " + outputFormat);
+ }
+ String url = GisMakers.buildWFSFeatureQuery(layerItem, mapSrsName, mapBBOX, maxFeatures, outputFormat);
+ LOG.info("returning WFSRequest: "+url);
+ return url;
+ }
+
}
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/GisMakers.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/GisMakers.java
index 5018ea2..a4121c3 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/GisMakers.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/GisMakers.java
@@ -7,18 +7,17 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* The Class URLMakers.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
- * Oct 29, 2020
+ * Oct 29, 2020
*/
public class GisMakers {
public static final String CQL_FILTER_PARAMETER = "CQL_FILTER";
-
+
public static final String GEOM_NAME_BOUNDED = "geom";
// MAP SERVER PIVOT
@@ -30,53 +29,56 @@ public class GisMakers {
public static final String CSV = "csv";
public static final String JSON = "json";
-
+
private static String[][] a = { { "\\?", "%3F" }, { "&", "%26" }, };
-
+
private static final Logger LOG = LoggerFactory.getLogger(GisMakers.class);
-
+
/**
* The Enum COORDINATE_FORMAT.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
- * Oct 29, 2020
+ * Oct 29, 2020
*/
public static enum COORDINATE_FORMAT {
XY, YX
};
-
/**
* Builds the WFS feature query.
*
- * @param layerItem the layer item
- * @param mapSrsName the map srs name
- * @param mapBBOX the map BBOX
- * @param maxFeatures the max features
+ * @param layerItem the layer item
+ * @param mapSrsName the map srs name
+ * @param mapBBOX the map BBOX
+ * @param maxFeatures the max features
* @param outputFormat the output format
* @return the string
*/
- public static String buildWFSFeatureQuery(LayerItem layerItem, String mapSrsName, BoundsMap mapBBOX, int maxFeatures, String outputFormat) {
+ public static String buildWFSFeatureQuery(LayerItem layerItem, String mapSrsName, BoundsMap mapBBOX,
+ int maxFeatures, String outputFormat) {
String link = layerItem.getMapServerHost();
LOG.debug("Map server host URL: " + link);
LOG.debug("CQL filter is: " + layerItem.getCqlFilter());
LOG.debug("MAX FEATURES: " + maxFeatures);
+ LOG.debug("BBOX: " + mapBBOX);
+ LOG.debug("Output Format: " + outputFormat);
String outputformat = null;
- String boundingBox = "";
+ String boundingBox = null;
// CASE MAP SERVER
SERVERTYPE mapserverType = MapServerRecognize.recongnize(layerItem);
LOG.debug("Recongnized SERVERTYPE: " + mapserverType);
-
if (mapserverType != null) {
if (mapserverType.equals(SERVERTYPE.MAPSERVER)) {
LOG.debug("wms url contains wxs is a map server? no appending /wfs ");
outputformat = MapServerRecognize.outputFormatRecognize(SERVERTYPE.MAPSERVER, outputFormat);
- boundingBox = BBOX_FORMAT(COORDINATE_FORMAT.YX, ",",mapBBOX.getLowerLeftX(),mapBBOX.getLowerLeftY(),mapBBOX.getUpperRightX(),mapBBOX.getUpperRightY()); // USE AXIS XY
+ if (mapBBOX != null)
+ boundingBox = BBOX_FORMAT(COORDINATE_FORMAT.YX, ",", mapBBOX.getLowerLeftX(),
+ mapBBOX.getLowerLeftY(), mapBBOX.getUpperRightX(), mapBBOX.getUpperRightY()); // USE AXIS XY
// DEBUG
LOG.debug("SERVERTYPE.MAPSERVER outputformat: " + outputformat);
LOG.debug("SERVERTYPE.MAPSERVER srsName: " + mapSrsName);
@@ -85,8 +87,10 @@ public class GisMakers {
LOG.debug("is geoserver appending suffix /wfs if is not present");
link += link.endsWith("wfs") ? "" : "/wfs";
outputformat = MapServerRecognize.outputFormatRecognize(SERVERTYPE.GEOSEVER, outputFormat);
- mapSrsName = "urn:x-ogc:def:crs:"+mapSrsName;
- boundingBox = BBOX_FORMAT(COORDINATE_FORMAT.YX, ",",mapBBOX.getLowerLeftX(),mapBBOX.getLowerLeftY(),mapBBOX.getUpperRightX(),mapBBOX.getUpperRightY()); // USE AXIS XY
+ mapSrsName = "urn:x-ogc:def:crs:" + mapSrsName;
+ if (mapBBOX != null)
+ boundingBox = BBOX_FORMAT(COORDINATE_FORMAT.YX, ",", mapBBOX.getLowerLeftX(),
+ mapBBOX.getLowerLeftY(), mapBBOX.getUpperRightX(), mapBBOX.getUpperRightY()); // USE AXIS XY
// DEBUG
LOG.debug("SERVERTYPE.GEOSEVER outputformat: " + outputformat);
LOG.debug("SERVERTYPE.GEOSEVER srsName: " + mapSrsName);
@@ -98,23 +102,31 @@ public class GisMakers {
// + (outputformat == null ? "" : "&OUTPUTFORMAT=" + outputformat);
//
- link += "?"+
- URLParserUtil.addParameterToQueryString(WFSGetFeature.SERVICE.getParameter(), WFSGetFeature.SERVICE.getValue(), false, true)+
- URLParserUtil.addParameterToQueryString(WFSGetFeature.VERSION.getParameter(), WFSGetFeature.VERSION.getValue(), false, true)+
- URLParserUtil.addParameterToQueryString(WFSGetFeature.REQUEST.getParameter(), WFSGetFeature.REQUEST.getValue(), false, true)+
- URLParserUtil.addParameterToQueryString(WFSGetFeature.SRSNAME.getParameter(), mapSrsName, false, true)+
- URLParserUtil.addParameterToQueryString(WFSGetFeature.TYPENAME.getParameter(), layerItem.getName(), false, true)+
- (maxFeatures == 0 ? "" : URLParserUtil.addParameterToQueryString(WFSGetFeature.MAXFEATURES.getParameter(), maxFeatures+"", false, true))+
- (outputformat == null ? "" : URLParserUtil.addParameterToQueryString(WFSGetFeature.OUTPUTFORMAT.getParameter(), outputformat, false, false));
-
-
+ link += "?"
+ + URLParserUtil.addParameterToQueryString(WFSGetFeature.SERVICE.getParameter(),
+ WFSGetFeature.SERVICE.getValue(), false, true)
+ + URLParserUtil.addParameterToQueryString(WFSGetFeature.VERSION.getParameter(),
+ WFSGetFeature.VERSION.getValue(), false, true)
+ + URLParserUtil.addParameterToQueryString(WFSGetFeature.REQUEST.getParameter(),
+ WFSGetFeature.REQUEST.getValue(), false, true)
+ + URLParserUtil.addParameterToQueryString(WFSGetFeature.SRSNAME.getParameter(), mapSrsName, false, true)
+ + URLParserUtil.addParameterToQueryString(WFSGetFeature.TYPENAME.getParameter(), layerItem.getName(),
+ false, true)
+ + (maxFeatures == 0 ? ""
+ : URLParserUtil.addParameterToQueryString(WFSGetFeature.MAXFEATURES.getParameter(),
+ maxFeatures + "", false, true))
+ + (outputformat == null ? ""
+ : URLParserUtil.addParameterToQueryString(WFSGetFeature.OUTPUTFORMAT.getParameter(),
+ outputformat, false, false));
+
if (layerItem.getCqlFilter() != null && !layerItem.getCqlFilter().isEmpty()) {
- if (layerItem.getCqlFilter().contains("BBOX("+GEOM_NAME_BOUNDED+"")) {
+ if (layerItem.getCqlFilter().contains("BBOX(" + GEOM_NAME_BOUNDED + "")) {
// THE BBOX IS ALREADY USED INTO CQL FILTERING, SO USING IT DIRECTLY
link += "&" + CQL_FILTER_PARAMETER + "=" + layerItem.getCqlFilter();
} else {
// I NEED TO ENCODE THE BBOX INTO CQL FILTERING,
- String cqlFilterValue = "BBOX("+GEOM_NAME_BOUNDED+"," + boundingBox + ")" + " AND " + layerItem.getCqlFilter();
+ String cqlFilterValue = "BBOX(" + GEOM_NAME_BOUNDED + "," + boundingBox + ")" + " AND "
+ + layerItem.getCqlFilter();
link += "&" + CQL_FILTER_PARAMETER + "=" + cqlFilterValue;
}
@@ -172,44 +184,30 @@ public class GisMakers {
return string;
}
-
-
+
/**
* Format.
*
- * @param format the format
+ * @param format the format
* @param separator the separator
* @return the string
*/
- public static String BBOX_FORMAT(COORDINATE_FORMAT format, String separator, double lowerLeftX, double lowerLeftY, double upperRightX, double upperRightY) {
-
- if(format==null)
+ public static String BBOX_FORMAT(COORDINATE_FORMAT format, String separator, double lowerLeftX, double lowerLeftY,
+ double upperRightX, double upperRightY) {
+
+ if (format == null)
format = COORDINATE_FORMAT.XY;
-
- if(separator==null)
+
+ if (separator == null)
separator = ",";
-
+
switch (format) {
case XY:
- return String.format("%s%s%s%s%s%s%s",
- String.valueOf(lowerLeftX),
- separator,
- String.valueOf(lowerLeftY),
- separator,
- String.valueOf(upperRightX),
- separator,
- String.valueOf(upperRightY)
- );
+ return String.format("%s%s%s%s%s%s%s", String.valueOf(lowerLeftX), separator, String.valueOf(lowerLeftY),
+ separator, String.valueOf(upperRightX), separator, String.valueOf(upperRightY));
case YX:
- return String.format("%s%s%s%s%s%s%s",
- String.valueOf(lowerLeftY),
- separator,
- String.valueOf(lowerLeftX),
- separator,
- String.valueOf(upperRightY),
- separator,
- String.valueOf(upperRightX)
- );
+ return String.format("%s%s%s%s%s%s%s", String.valueOf(lowerLeftY), separator, String.valueOf(lowerLeftX),
+ separator, String.valueOf(upperRightY), separator, String.valueOf(upperRightX));
}
return null;