diff --git a/module/javascript/app/vmap/mapmanager/mapmanager.js b/module/javascript/app/vmap/mapmanager/mapmanager.js index 39bb4e0fdbd795ee3976ce6350430882451cd08f..e3373e5ecdddf34f2da578fbcc5916f4284c67b0 100644 --- a/module/javascript/app/vmap/mapmanager/mapmanager.js +++ b/module/javascript/app/vmap/mapmanager/mapmanager.js @@ -1638,3 +1638,21 @@ nsVmap.nsMapManager.MapManager.prototype.getInsertableBusinessObjects = function return aInsertableBOs; }; + +/** + * Measure features getter + * + * @return {array} + */ +nsVmap.nsMapManager.MapManager.prototype.getMeasureFeatures = function () { + + var oMeasureScope = angular.element($('[app-measure]').children()).scope(); + var aMeasureFeatures = oMeasureScope['ctrl'].oOpenLayersMeasureOverlayFeatures_.getArray(); + + return aMeasureFeatures; +} + +nsVmap.nsMapManager.MapManager.prototype.getMeasureFeaturesAsGeoJSON = function () { + + aMeasureFeatures = this.getMeasureFeatures(); +} diff --git a/module/javascript/app/vmap/tools/measure.js b/module/javascript/app/vmap/tools/measure.js index ba56969063fd78c335aa9cc27883aca7701e9072..49786e4049fc529128c43666bd22dc5279a2414b 100755 --- a/module/javascript/app/vmap/tools/measure.js +++ b/module/javascript/app/vmap/tools/measure.js @@ -386,10 +386,10 @@ nsVmap.nsToolsManager.Measure.prototype.measureController.prototype.createMeasur this.setInfosToFeature(olFeature); if (goog.isDefAndNotNull(this.measureTooltipElementTemp_)) { - + this.measureTooltipElement_.innerHTML = this.measureTooltipElementTemp_.innerHTML; this.measureTooltipElementTemp_.style.display = 'none'; - + } else { this.measureTooltipElement_.innerHTML = ''; @@ -546,6 +546,9 @@ nsVmap.nsToolsManager.Measure.prototype.measureController.prototype.setInfosToFe // Projection olFeature.set('Projection', this['map'].getView().getProjection().getCode()); + olFeature.set('geom_center', olFeature.getGeometry().getCenter()); + olFeature.set('geom_radius', olFeature.getGeometry().getRadius()); + } else { // Type olFeature.set('Type', 'undefined'); @@ -1128,4 +1131,4 @@ nsVmap.nsToolsManager.Measure.prototype.measureController.prototype.mobileDelete // Définit la directive et le controller oVmap.module.directive('appMeasure', nsVmap.nsToolsManager.Measure.prototype.measureDirective); -oVmap.module.controller('AppmeasureController', nsVmap.nsToolsManager.Measure.prototype.measureController); \ No newline at end of file +oVmap.module.controller('AppmeasureController', nsVmap.nsToolsManager.Measure.prototype.measureController); diff --git a/module/javascript/app/vmap/tools/print.js b/module/javascript/app/vmap/tools/print.js index 13e0f6d43a5fb86dd1e0793ff1525a97301051cd..a4da24b2226efaebd24a242eb9e0ac342265eb0e 100644 --- a/module/javascript/app/vmap/tools/print.js +++ b/module/javascript/app/vmap/tools/print.js @@ -592,6 +592,7 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.prepareAndLaunch var aLocationOverlayFeatures = oVmap.getMap().getLocationOverlayFeatures().getArray(); var aPopupOverlayFeatures = oVmap.getMap().getPopupOverlayFeatures().getArray(); var aSelectionOverlayFeatures = oVmap.getMap().getSelectionOverlayFeatures().getArray(); + var aMeasureFeatures = oVmap.getMapManager().getMeasureFeatures(); var oPrintOptions = { scope: scope, @@ -599,6 +600,7 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.prepareAndLaunch templateId: templateId, printStyleId: this.$scope_['selectedPrintstyleId'], resolutionCoeff: this['dpi'], + measureFeatures: aMeasureFeatures, features: goog.array.concat(aLocationOverlayFeatures, aPopupOverlayFeatures, aSelectionOverlayFeatures) }; @@ -743,6 +745,7 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function extent: opt_options.extent, features: opt_options.features, featuresZoom: opt_options.featuresZoom, + measureFeatures: opt_options.measureFeatures, mapImageSize: mapImageSize, overviewSize: overviewSize } @@ -889,6 +892,15 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.getMapsJsonDef = sFeaturesZoom = oVmap['properties']['print']['features_zoom']; } + // Measures + var oMeasureFeatures = null; + if (goog.isArray(opt_options.measureFeatures)) { + if (opt_options.measureFeatures.length > 0) { + oMeasureFeatures = ol.getGeoJSONFromFeatures(opt_options.measureFeatures, + oVmap.getMap().getOLMap().getView().getProjection().getCode()); + } + } + if (goog.isDefAndNotNull(opt_options.mapImageSize)) { var oMapDef = { 'map_id': sMapId, @@ -899,6 +911,9 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.getMapsJsonDef = 'features': sEWKTFeatures, 'features_zoom': sFeaturesZoom }; + if (goog.isDefAndNotNull(oMeasureFeatures)) { + oMapDef['measure_features'] = oMeasureFeatures; + } } if (goog.isDefAndNotNull(opt_options.overviewSize)) { diff --git a/web_service/ws/PrintMapServices.class.inc b/web_service/ws/PrintMapServices.class.inc index 8c656d82a79f0611936a05c7a3bb8220adcab8db..a70672de6b20056261f8e97db20b2dde95dda170 100755 --- a/web_service/ws/PrintMapServices.class.inc +++ b/web_service/ws/PrintMapServices.class.inc @@ -199,7 +199,12 @@ class PrintMapServices extends PrintServices { $sFeaturesZoom = $this->aValues['features_zoom']; /** - * Map features zoom + * Measure features + */ + $aMeasureFeatures = $this->aValues['measure_features']; + + /** + * Map resolution coef */ $sResolutionCoeff = $this->aValues['resolution_coeff']; @@ -253,11 +258,13 @@ class PrintMapServices extends PrintServices { mkdir($this->aProperties['vas_home'] . '/public/vmap/prints', 0777, true); } } + $sMapJSONPath = $this->writeToFile($this->aProperties['vas_home'] . '/public/vmap/prints', 'map_json_' . $sTimestamp, $sMapJSON); $sFeaturesPath = $this->writeToFile($this->aProperties['vas_home'] . '/public/vmap/prints', 'features_' . $sTimestamp, $sFeatures); + $sMeasureFeaturesPath = $this->writeToFile($this->aProperties['vas_home'] . '/public/vmap/prints', 'measure_features_' . $sTimestamp, json_encode($aMeasureFeatures)); // Arguments de la ligne de commande - $aArguments = array($sProjectPath, $sPrintClientrUrl, $RestUrl, $sToken, $sOutputFile, $sMapId, $sMapJSONPath, $sImageSize, $sExtent, $sFeaturesPath, $sFeaturesZoom, $this->aValues['resolution_coeff'], $sQuality); + $aArguments = array($sProjectPath, $sPrintClientrUrl, $RestUrl, $sToken, $sOutputFile, $sMapId, $sMapJSONPath, $sImageSize, $sExtent, $sFeaturesPath, $sFeaturesZoom, $this->aValues['resolution_coeff'], $sQuality, $sMeasureFeaturesPath); // Commande à lancer $sCommand = '"' . $sPhantomjsPath . '" --ignore-ssl-errors=yes --ssl-protocol=any';