completed download of map image
This commit is contained in:
parent
6f3b2e258f
commit
c471f39d50
|
@ -1,9 +1,5 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.ui.products.concessioni;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION;
|
||||
|
@ -15,9 +11,10 @@ import org.gcube.portlets.user.geoportaldataviewer.client.ui.util.CustomFlexTabl
|
|||
|
||||
import com.github.gwtbootstrap.client.ui.DropdownButton;
|
||||
import com.github.gwtbootstrap.client.ui.NavLink;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Document;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.dom.client.Style;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
|
@ -45,10 +42,82 @@ public class LayerConcessioneView extends Composite {
|
|||
|
||||
private CustomFlexTable customTable = new CustomFlexTable();
|
||||
|
||||
private static enum IMAGE_EXPORT_AS {
|
||||
PNG, JPEG
|
||||
};
|
||||
|
||||
int downloadAttempt = 0;
|
||||
|
||||
public LayerConcessioneView(LayerConcessioneDV layerDV) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
GWT.log("Showing: " + layerDV);
|
||||
|
||||
DropdownButton exportMapButton = new DropdownButton("Export Map as...");
|
||||
exportMapButton.setType(ButtonType.LINK);
|
||||
exportMapButton.setTitle("Export this map view (OSM + layer) as an image...");
|
||||
exportMapButton.setVisible(false);
|
||||
Style expButton = exportMapButton.getElement().getStyle();
|
||||
expButton.setMarginTop(2, Unit.PX);
|
||||
|
||||
GWT.log("WMS LINK: " + layerDV.getWmsLink());
|
||||
if (layerDV.getLayerName() != null && layerDV.getWmsLink() != null) {
|
||||
|
||||
Location italyLocation = ExtentMapUtil.getLocation(PLACE.ITALY);
|
||||
Coordinate transformedCenterCoordinate = italyLocation.getCoordinate(MAP_PROJECTION.EPSG_3857);
|
||||
MapView mapView = new MapView(transformedCenterCoordinate,
|
||||
GeoportalDataViewerConstants.LIGHT_MAP_ITALY_FIT_ZOOM_ON, "70%", "300px");
|
||||
|
||||
exportMapButton.setVisible(true);
|
||||
mapViewPanel.add(exportMapButton);
|
||||
mapViewPanel.add(mapView);
|
||||
String mapServerHost = layerDV.getWmsLink().contains("?")
|
||||
? layerDV.getWmsLink().substring(0, layerDV.getWmsLink().indexOf("?"))
|
||||
: layerDV.getWmsLink();
|
||||
|
||||
|
||||
String htmlLinkId = mapView.getPanelMapElementId() + "-image-download";
|
||||
|
||||
for (IMAGE_EXPORT_AS exportType : IMAGE_EXPORT_AS.values()) {
|
||||
NavLink navLink = new NavLink(exportType.name());
|
||||
String exportExt = exportType.name().toLowerCase();
|
||||
String filename = layerDV.getLayerName() + "." + exportExt;
|
||||
String mimeType = "image/" + exportExt;
|
||||
final HTML htmlLink = new HTML("<a id=\"" + htmlLinkId + "\" download=\"" + filename + "\"></a>");
|
||||
navLink.getElement().appendChild(htmlLink.getElement());
|
||||
navLink.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
|
||||
// DOWNLOAD only the layer by Geoserver
|
||||
/*
|
||||
* Map<String, String> mapLayerURLs =
|
||||
* mapView.getLightOLSM().getLayerURLsProperty(); Collection<String> layerURLs =
|
||||
* mapLayerURLs.values(); ArrayList<String> layers = new
|
||||
* ArrayList<String>(layerURLs); exportPDF(layers.get(0)); String layerURL =
|
||||
* mapLayerURLs.get(layerDV.getLayerName()); GWT.log("layerDV name is: " +
|
||||
* layerDV.getLayerName()); if (layerURL != null) Window.open(layerURL,
|
||||
* "_blank", null);
|
||||
*/
|
||||
|
||||
downloadAttempt++;
|
||||
|
||||
if (downloadAttempt > 3) {
|
||||
Window.alert("LOOP");
|
||||
return;
|
||||
}
|
||||
|
||||
// DOWNLOAD the OSM + layer by canvas
|
||||
downloadMap(mapView.getLightOLSM().getMap(), mapView.getPanelMapElementId(), htmlLinkId,
|
||||
filename, mimeType);
|
||||
// mapExport(mapView.getLightOLSM().getMap(), mapView.getPanelMapElementId());
|
||||
}
|
||||
});
|
||||
|
||||
exportMapButton.add(navLink);
|
||||
|
||||
}
|
||||
|
||||
customTable.addNextKeyValue("Abstract", layerDV.getAbstractSection());
|
||||
customTable.addNextKeyValue("Valutazione qualità", layerDV.getValutazioneQualita());
|
||||
customTable.addNextKeyValue("Metodo raccolta dati", layerDV.getMetodoRaccoltaDati());
|
||||
|
@ -56,53 +125,6 @@ public class LayerConcessioneView extends Composite {
|
|||
customTable.addNextKeyValues("Autori", layerDV.getAuthors(), GeoportalDataViewerConstants.NEW_LINE_BR);
|
||||
layerConcessionePanel.add(customTable);
|
||||
|
||||
GWT.log("WMS LINK: " + layerDV.getWmsLink());
|
||||
if (layerDV.getLayerName() != null && layerDV.getWmsLink() != null) {
|
||||
|
||||
Location italyLocation = ExtentMapUtil.getLocation(PLACE.ITALY);
|
||||
Coordinate transformedCenterCoordinate = italyLocation.getCoordinate(MAP_PROJECTION.EPSG_3857);
|
||||
// Coordinate centerCoordinate = OLFactory.createCoordinate(GeoportalDataViewerConstants.ITALY_CENTER_LONG, GeoportalDataViewerConstants.ITALY_CENTER_LAT);
|
||||
// Coordinate transformedCenterCoordinate = MapUtils.transformCoordiante(centerCoordinate, MAP_PROJECTION.EPSG_4326.getName(), MAP_PROJECTION.EPSG_3857.getName());
|
||||
MapView mapView = new MapView(transformedCenterCoordinate,
|
||||
GeoportalDataViewerConstants.LIGHT_MAP_ITALY_FIT_ZOOM_ON, "70%", "300px");
|
||||
|
||||
mapViewPanel.add(mapView);
|
||||
String mapServerHost = layerDV.getWmsLink().contains("?")
|
||||
? layerDV.getWmsLink().substring(0, layerDV.getWmsLink().indexOf("?"))
|
||||
: layerDV.getWmsLink();
|
||||
|
||||
DropdownButton downloadButt = new DropdownButton("download as...");
|
||||
NavLink navLink = new NavLink("PNG");
|
||||
String htmlLinkId = mapView.getPanelMapElementId() + "-image-download";
|
||||
final HTML htmlLink = new HTML("<a id=\"" + htmlLinkId + "\" download=\"map.png\"></a>");
|
||||
navLink.getElement().appendChild(htmlLink.getElement());
|
||||
navLink.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
// Map<String, String> mapLayerURLs = mapView.getLightOLSM().getLayerURLsProperty();
|
||||
// Collection<String> layerURLs = mapLayerURLs.values();
|
||||
// ArrayList<String> layers = new ArrayList<String>(layerURLs);
|
||||
// exportPDF(layers.get(0));
|
||||
|
||||
|
||||
|
||||
// String layerURL = mapLayerURLs.get(layerDV.getLayerName());
|
||||
// GWT.log("layerDV name is: " + layerDV.getLayerName());
|
||||
// if (layerURL != null)
|
||||
// Window.open(layerURL, "_blank", null);
|
||||
|
||||
// GWT.log("GWT Map panel id: " + mapView.getPanelMapElementId());
|
||||
// Element mapContainer =
|
||||
// Document.get().getElementById(mapView.getPanelMapElementId());
|
||||
// GWT.log("GWT Map panel id: " + mapContainer);
|
||||
downloadMap(mapView.getLightOLSM().getMap(), mapView.getPanelMapElementId(), htmlLinkId);
|
||||
// mapExport(mapView.getLightOLSM().getMap(), mapView.getPanelMapElementId());
|
||||
}
|
||||
});
|
||||
|
||||
downloadButt.add(navLink);
|
||||
customTable.addNextKeyWidget("Layer", downloadButt);
|
||||
mapView.addWMSLayer(mapServerHost, layerDV.getLayerName(), layerDV.getBbox());
|
||||
}
|
||||
}
|
||||
|
@ -120,7 +142,8 @@ public class LayerConcessioneView extends Composite {
|
|||
*
|
||||
* @param msg the msg
|
||||
*/
|
||||
public static native void downloadMap(ol.Map map, String mapPanelId, String linkId)/*-{
|
||||
public static native void downloadMap(ol.Map map, String mapPanelId, String linkId, String filename,
|
||||
String mimeType)/*-{
|
||||
console.log("map: " + map);
|
||||
|
||||
map.once('rendercomplete', function() {
|
||||
|
@ -149,10 +172,10 @@ public class LayerConcessioneView extends Composite {
|
|||
});
|
||||
if (navigator.msSaveBlob) {
|
||||
// link download attribute does not work on MS browsers
|
||||
navigator.msSaveBlob(mapCanvas.msToBlob(), 'map.png');
|
||||
navigator.msSaveBlob(mapCanvas.msToBlob(), filename);
|
||||
} else {
|
||||
var link = $doc.getElementById(linkId);
|
||||
link.href = mapCanvas.toDataURL();
|
||||
link.href = mapCanvas.toDataURL(mimeType);
|
||||
link.click();
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue