From 474fe01db3f910ed3bb808cbee1e983e16bd20d2 Mon Sep 17 00:00:00 2001 From: pimu Date: Mon, 7 Sep 2020 17:39:07 +0200 Subject: [PATCH 01/12] first commit --- README-SDK-2D.md | 4 ++- README-SDK-3D.md | 3 +- samples-src/pages/2d/page-controls-amd.html | 2 +- .../pages/2d/page-controls-bundle.html | 2 +- samples-src/pages/2d/page-controls-es6.html | 2 +- .../pages/2d/page-controlsOptions-bundle.html | 6 ++-- samples-src/pages/2d/page-events-bundle.html | 4 +-- .../pages/2d/page-exportmap-bundle.html | 2 +- .../pages/2d/page-geolocate-bundle.html | 7 +++-- .../pages/2d/page-mapOptions-bundle.html | 2 +- samples-src/pages/3d/page-events-bundle.html | 4 +-- .../3d/page-geolocatePosition-bundle.html | 2 +- src/Interface/IMapBase.js | 2 +- src/Interface/IMapView.js | 28 ++++++++----------- src/Map.js | 6 ++-- src/OpenLayers/OlMapControls.js | 4 +-- test/index.js | 4 +-- 17 files changed, 42 insertions(+), 42 deletions(-) diff --git a/README-SDK-2D.md b/README-SDK-2D.md index ca4ec46a2..283ef41b0 100644 --- a/README-SDK-2D.md +++ b/README-SDK-2D.md @@ -282,6 +282,8 @@ La propriété **location** permet de préciser le lieu à géocoder et la propr * "CadastralParcels" : géocodage d'indentifants de parcelles cadastrales +* "location" : regroupe les types "PositionOfInterest" et "StreetAddress" + **Exemple :** @@ -293,7 +295,7 @@ var map = Gp.Map.load( // centrage de la carte center : { location : "73 avenue de Paris, Saint-Mandé", - locationType : ["StreetAddress"] + locationType : "StreetAddress" }, } ) ; diff --git a/README-SDK-3D.md b/README-SDK-3D.md index d0f8fc057..54ca252cd 100644 --- a/README-SDK-3D.md +++ b/README-SDK-3D.md @@ -286,6 +286,7 @@ La propriété **location** permet de préciser le lieu à géocoder et la propr * "CadastralParcels" : géocodage d'indentifants de parcelles cadastrales +* "location" : regroupe les types "PositionOfInterest" et "StreetAddress" **Exemple :** @@ -297,7 +298,7 @@ var map = Gp.Map.load( // centrage de la carte center : { location : "73 avenue de Paris, Saint-Mandé", - locationType : ["StreetAddress"] + locationType : "StreetAddress" }, } ) ; diff --git a/samples-src/pages/2d/page-controls-amd.html b/samples-src/pages/2d/page-controls-amd.html index 5f799b022..86e9a57ac 100644 --- a/samples-src/pages/2d/page-controls-amd.html +++ b/samples-src/pages/2d/page-controls-amd.html @@ -87,7 +87,7 @@

Gestion des controles avec le SDK

if (elem.value.toLowerCase() == "search") { ctrlOpts[elem.value]["displayAdvancedSearch"] = true ; ctrlOpts[elem.value]["resources"] = { - geocode : ["StreetAddress"], + geocode : "StreetAddress", autocomplete : ["StreetAddress"] } ; } diff --git a/samples-src/pages/2d/page-controls-bundle.html b/samples-src/pages/2d/page-controls-bundle.html index aeef5f069..eb7e53b30 100644 --- a/samples-src/pages/2d/page-controls-bundle.html +++ b/samples-src/pages/2d/page-controls-bundle.html @@ -164,7 +164,7 @@

Gestion des controles avec le SDK

if (elem.value.toLowerCase() == "search") { ctrlOpts[elem.value]["displayAdvancedSearch"] = true ; ctrlOpts[elem.value]["resources"] = { - geocode : ["StreetAddress"], + geocode : "StreetAddress", autocomplete : ["StreetAddress"] } ; } diff --git a/samples-src/pages/2d/page-controls-es6.html b/samples-src/pages/2d/page-controls-es6.html index cc517af4b..6e55aec35 100644 --- a/samples-src/pages/2d/page-controls-es6.html +++ b/samples-src/pages/2d/page-controls-es6.html @@ -86,7 +86,7 @@

Gestion des controles avec le SDK

if (elem.value.toLowerCase() == "search") { ctrlOpts[elem.value]["displayAdvancedSearch"] = true ; ctrlOpts[elem.value]["resources"] = { - geocode : ["StreetAddress"], + geocode : "StreetAddress", autocomplete : ["StreetAddress"] } ; } diff --git a/samples-src/pages/2d/page-controlsOptions-bundle.html b/samples-src/pages/2d/page-controlsOptions-bundle.html index 2d8fdb58b..c9412109a 100644 --- a/samples-src/pages/2d/page-controlsOptions-bundle.html +++ b/samples-src/pages/2d/page-controlsOptions-bundle.html @@ -267,7 +267,7 @@

Ajout d'une carte avec Gp.Map.load() et l'ensemble des options possibles de search : { maximised : false, resources : { - geocode : ["PositionOfInterest"], + geocode : "PositionOfInterest", autocomplete : ["StreetAddress"] }, displayAdvancedSearch : false, @@ -275,7 +275,7 @@

Ajout d'une carte avec Gp.Map.load() et l'ensemble des options possibles de }, reverseSearch : { maximised : false, - resources : ["PositionOfInterest"], + resources : "PositionOfInterest", delimitations : ["Point", "Extent", "Circle"] }, drawing : { @@ -345,7 +345,7 @@

Ajout d'une carte avec Gp.Map.load() et l'ensemble des options possibles de if (elem.value.toLowerCase() == "search") { ctrlOpts[elem.value]["displayAdvancedSearch"] = true ; ctrlOpts[elem.value]["resources"] = { - geocode : ["StreetAddress"], + geocode : "StreetAddress", autocomplete : ["StreetAddress"] } ; } diff --git a/samples-src/pages/2d/page-events-bundle.html b/samples-src/pages/2d/page-events-bundle.html index 63f2ff568..0f0378096 100644 --- a/samples-src/pages/2d/page-events-bundle.html +++ b/samples-src/pages/2d/page-events-bundle.html @@ -36,9 +36,9 @@

Abonnement aux evenements

var map = Gp.Map.load('geoportalMap',{ configUrl : "{{resources}}/autoconf.js", // apiKey : "{{apikey}}", center : { - geolocate : true, + // geolocate : true, location : "Nimes", - locationTypes : ["PositionOfInterest"] + locationTypes : "PositionOfInterest" }, azimuth : 45, layersOptions : { diff --git a/samples-src/pages/2d/page-exportmap-bundle.html b/samples-src/pages/2d/page-exportmap-bundle.html index 165b85896..4e537fe50 100644 --- a/samples-src/pages/2d/page-exportmap-bundle.html +++ b/samples-src/pages/2d/page-exportmap-bundle.html @@ -38,7 +38,7 @@

Export de l'état d'une carte.

configUrl : "{{resources}}/autoconf.js", // apiKey : "{{apikey}}", center : { location : "Nimes", - locationTypes : ["PositionOfInterest"] + locationTypes : "PositionOfInterest" }, layersOptions : { 'ORTHOIMAGERY.ORTHOPHOTOS': { diff --git a/samples-src/pages/2d/page-geolocate-bundle.html b/samples-src/pages/2d/page-geolocate-bundle.html index dfdb4fd20..6ffddf2ba 100644 --- a/samples-src/pages/2d/page-geolocate-bundle.html +++ b/samples-src/pages/2d/page-geolocate-bundle.html @@ -66,11 +66,12 @@

Centrage sur la position de l'internaute, ou sur une adresse en cas de probl function loadMap3() { Gp.Map.load('geoportalMap3', { - configUrl : "{{resources}}/autoconf.js", // apiKey : "{{apikey}}", + configUrl : "{{resources}}/autoconf.js", + apiKey : "{{apikey}}", center : { - geolocate : true, + // geolocate : true, location : "Nimes", - locationType : ["PositionOfInterest"] + locationType : "PositionOfInterest" } }); } diff --git a/samples-src/pages/2d/page-mapOptions-bundle.html b/samples-src/pages/2d/page-mapOptions-bundle.html index 6e126457a..b94ca93a5 100644 --- a/samples-src/pages/2d/page-mapOptions-bundle.html +++ b/samples-src/pages/2d/page-mapOptions-bundle.html @@ -36,7 +36,7 @@

Ajout d'une carte avec Gp.Map.load() et l'ensemble des options possibles de projection : "EPSG:4326" /* location adress */ // location : "73 avenue de paris, 94160 Saint-Mandé", - // locationType : ["StreetAddress"] + // locationType : "StreetAddress" /* geolocation */ // geolocate : true }, diff --git a/samples-src/pages/3d/page-events-bundle.html b/samples-src/pages/3d/page-events-bundle.html index 4c02f25df..6ccc13865 100644 --- a/samples-src/pages/3d/page-events-bundle.html +++ b/samples-src/pages/3d/page-events-bundle.html @@ -40,9 +40,9 @@

Abonnement aux evenements

configUrl : "{{resources}}/autoconf.js", // apiKey : "{{apikey}}", viewMode : "3d", center : { - geolocate : true, + // geolocate : true, location : "Nimes", - locationTypes : ["PositionOfInterest"] + locationTypes : "PositionOfInterest" }, azimuth : 45, layersOptions : { diff --git a/samples-src/pages/3d/page-geolocatePosition-bundle.html b/samples-src/pages/3d/page-geolocatePosition-bundle.html index 3674e138b..7c76e3eab 100644 --- a/samples-src/pages/3d/page-geolocatePosition-bundle.html +++ b/samples-src/pages/3d/page-geolocatePosition-bundle.html @@ -36,7 +36,7 @@

Carte 3D.

viewMode : "3d", center : { geolocate : true, - location : "Biarritz" + // location : "Biarritz" } }); diff --git a/src/Interface/IMapBase.js b/src/Interface/IMapBase.js index 83df04fe0..5158e37d3 100644 --- a/src/Interface/IMapBase.js +++ b/src/Interface/IMapBase.js @@ -203,7 +203,7 @@ IMap.DEFAULTOPTIONS = { projection : "EPSG:4326", geolocate : false, location : null, - locationType : ["StreetAddress", "PositionOfInterest"] + locationType : "location" }, azimuth : 0, enableRotation : true, diff --git a/src/Interface/IMapView.js b/src/Interface/IMapView.js index d75f570d4..387a76eff 100644 --- a/src/Interface/IMapView.js +++ b/src/Interface/IMapView.js @@ -6,7 +6,7 @@ import { Services } from "geoportal-extensions-openlayers"; * * @param {Object} opts - opts de geocodage * @param {String} opts.location - localisant - * @param {Array.} opts.locationType - types de localisants + * @param {String} opts.locationType - type de localisant * @private */ IMap.prototype.centerGeocode = function (opts) { @@ -22,32 +22,28 @@ IMap.prototype.centerGeocode = function (opts) { } // On cherche les types de géocodage disponibles var layersIds = Config.getLayersId(this.apiKey); - var locTypes = opts.locationType || ["StreetAddress", "PositionOfInterest"]; - var fo = {}; - fo.type = []; - while (locTypes.length > 0) { - var lt = locTypes.pop(); - if (layersIds.indexOf(lt + "$OGC:OPENLS;Geocode") >= 0) { - this.logger.trace("[IMap] centerGeocode : found rights for " + lt); - fo.type.push(lt); - } + var locType = opts.locationType || "location"; + var index = null; + if (layersIds.indexOf(locType + "$OGC:OPENLS;Geocode") >= 0) { + this.logger.trace("[IMap] centerGeocode : found rights for " + locType); + index = locType; } // Si on n'a rien trouve, on ne peut pas geocoder - if (fo.type.length === 0) { + if (!index) { this.logger.info("no rights for geocoding services"); return; } var map = this; Services.geocode({ apiKey : this.apiKey, - location : opts.location, - filterOptions : fo, + query : opts.location, + index : index, // si le service de geocodage répond onSuccess : function (geocodeResponse) { - map.logger.trace("[IMap] found center by geocoding (" + geocodeResponse.locations[0].position.x + ", " + geocodeResponse.locations[0].position.y + ")"); + map.logger.trace("[IMap] found center by geocoding (" + geocodeResponse.locations[0].position.lon + ", " + geocodeResponse.locations[0].position.lat + ")"); var point = { - x : geocodeResponse.locations[0].position.y, - y : geocodeResponse.locations[0].position.x, + x : geocodeResponse.locations[0].position.lon, + y : geocodeResponse.locations[0].position.lat, projection : "EPSG:4326" }; map.setAutoCenter(point); diff --git a/src/Map.js b/src/Map.js index d8018c2c4..11b56656e 100644 --- a/src/Map.js +++ b/src/Map.js @@ -12,7 +12,7 @@ * @property {Float} y - y coordinates for center * @property {String} projection - center coordinates srs * @property {String} location - place or address where to center the map - * @property {Array.} locationType - location types ("StreetAddress", "PositionOfInterest", "CadastralParcel"). Default is ["StreetAddress", "PositionOfInterest"] + * @property {String} locationType - location type ("StreetAddress", "PositionOfInterest", "CadastralParcel", "location"). Default is "location" * @property {Boolean} geolocate - center the map by geolocation */ var center = { @@ -810,7 +810,7 @@ var layerOptions = { * | div | String / DOMElement | Target HTML element container or its id. Default is chosen by map implementation. * | maximised | Boolean | if the control has to be opened or not. | * | resources | Object | resources to be used by geocode and autocompletion services | - * | resources.geocode | Array(String) | resources geocoding, by default : ["PositionOfInterest", "StreetAddress"] | + * | resources.geocode | String | resources geocoding, by default : "location" | * | resources.autocomplete | Array(String) | resources autocompletion, by default : ["PositionOfInterest", "StreetAddress"] | * | displayAdvancedSearch | Boolean | True to display advanced search tools. Default is false (not displayed) | * | advancedSearch | Object | advanced search options for geocoding (filters). Properties can be found among geocode options.filterOptions (see https://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~geocode) | @@ -827,7 +827,7 @@ var layerOptions = { * | - | - | - | * | div | String / DOMElement | Target HTML element container or its id. Default is chosen by map implementation. * | maximised | Boolean | if the control has to be opened or not. | - * | resources | Array(String) | resources geocoding, by default : ["PositionOfInterest", "StreetAddress"] | + * | resources | String | resources geocoding, by default : "location" | * | displayAdvancedSearch | Boolean | False to disable advanced search tools (it will not be displayed). Default is true (displayed) | * | delimitations | Array(String) | delimitations for reverse geocoding, by default : ["Point", "Circle", "Extent"]. Possible values are : "Point", "Circle", "Extent". Delimitations will be displayed in the same order in widget list. | * | reverseGeocodeOptions | Object | reverse geocode service options. see https://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~reverseGeocode to know all reverse geocode options. | diff --git a/src/OpenLayers/OlMapControls.js b/src/OpenLayers/OlMapControls.js index ceb3dfbfa..1b9b23359 100644 --- a/src/OpenLayers/OlMapControls.js +++ b/src/OpenLayers/OlMapControls.js @@ -900,7 +900,7 @@ OlMap.prototype.addElevationPathControl = function (controlOpts) { * @param {String|Element} controlOpts.div - target HTML element container. Default is chosen by implementation. * @param {Boolean} controlOpts.maximised - if the control has to be opened or not. * @param {Object} controlOpts.resources - resources to be used by geocode and autocompletion services - * @param {Array.} controlOpts.resources.geocode - resources geocoding, by default : ["PositionOfInterest", "StreetAddress"] + * @param {String} controlOpts.resources.geocode - resources geocoding, by default : "location" * @param {Array.} controlOpts.resources.autocomplete - resources autocompletion, by default : ["PositionOfInterest", "StreetAddress"] * @param {Boolean} [controlOpts.displayAdvancedSearch = false] - True to display advanced search tools. Default is false (not displayed) * @param {Object} controlOpts.advancedSearch - advanced search options for geocoding (filters). Properties can be found among geocode options.filterOptions (see https://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~geocode) @@ -951,7 +951,7 @@ OlMap.prototype.addSearchControl = function (controlOpts) { * @param {Object} controlOpts - control options * @param {String|Element} controlOpts.div - target HTML element container. Default is chosen by implementation. * @param {Boolean} controlOpts.maximised - if the control has to be opened or not. - * @param {Array.} controlOpts.resources - resources geocoding, by default : ["PositionOfInterest", "StreetAddress"] + * @param {String} controlOpts.resources - resources geocoding, by default : "location" * @param {Array.} controlOpts.delimitations - delimitations for reverse geocoding, by default : ["Point", "Circle", "Extent"]. Possible values are : "Point", "Circle", "Extent". Delimitations will be displayed in the same order in widget list. * @param {Object} [controlOpts.reverseGeocodeOptions = {}] - reverse geocode service options. see https://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~reverseGeocode to know all reverse geocode options. * diff --git a/test/index.js b/test/index.js index e37e1bc12..1878cb9ee 100644 --- a/test/index.js +++ b/test/index.js @@ -4,9 +4,9 @@ if (module.hot) { "mocha-loader!./spec", // Process through mocha-loader true, // Skip recursive processing ///\.test.js$/ // Pick only files ending with .test.js - ///OlMap\.test.js/ + /OlMap\.test.js/ ///OlMapBox\.test.js/ - /ItMap\.test.js/ + ///ItMap\.test.js/ ///SDK2D\.test.js/ ///SDK3D\.test.js/ From aace4c15a81e92edc5bdf8544d151b0ea0dfe1bd Mon Sep 17 00:00:00 2001 From: pimu Date: Wed, 9 Sep 2020 13:09:43 +0200 Subject: [PATCH 02/12] fix(3d) : Centrage par geocodage --- samples-src/config-2d.json | 2 +- samples-src/config-3d.json | 3 ++- samples-src/pages/2d/page-events-bundle.html | 3 ++- samples-src/pages/2d/page-exportmap-bundle.html | 3 ++- samples-src/pages/2d/page-geolocate-bundle.html | 6 ++++-- samples-src/pages/2d/page-graphicScale-bundle.html | 3 ++- samples-src/pages/2d/page-marker-bundle.html | 3 ++- samples-src/pages/3d/page-events-bundle.html | 3 ++- .../pages/3d/page-geolocateLocation-bundle.html | 3 ++- .../pages/3d/page-geolocatePosition-bundle.html | 3 ++- src/Interface/IMapBase.js | 9 +++------ src/Interface/IMapView.js | 14 +++++++------- 12 files changed, 31 insertions(+), 24 deletions(-) diff --git a/samples-src/config-2d.json b/samples-src/config-2d.json index d63c84770..d6922f5f9 100644 --- a/samples-src/config-2d.json +++ b/samples-src/config-2d.json @@ -5,4 +5,4 @@ "apikey" : "jhyvi0fgmnuxvfv0zjzorvdn", "apikey2" : "kgco926a9mj4fcng4whjf5ac", "apikey3" : "an7nvfzojv5wa96dsga5nk8w" -} +} \ No newline at end of file diff --git a/samples-src/config-3d.json b/samples-src/config-3d.json index eb31320fe..887160f74 100644 --- a/samples-src/config-3d.json +++ b/samples-src/config-3d.json @@ -3,5 +3,6 @@ "resources" : "../resources", "proxy" : "https://localhost/proxy/proxy.php", "apikey" : "ptlp78g6fvz9daz5mg2fztvr", - "apikey2" : "an7nvfzojv5wa96dsga5nk8w" + "apikey2" : "an7nvfzojv5wa96dsga5nk8w", + "apikey3" : "jhyvi0fgmnuxvfv0zjzorvdn" } diff --git a/samples-src/pages/2d/page-events-bundle.html b/samples-src/pages/2d/page-events-bundle.html index 0f0378096..9d06cd3ae 100644 --- a/samples-src/pages/2d/page-events-bundle.html +++ b/samples-src/pages/2d/page-events-bundle.html @@ -34,7 +34,8 @@

Abonnement aux evenements

} var map = Gp.Map.load('geoportalMap',{ - configUrl : "{{resources}}/autoconf.js", // apiKey : "{{apikey}}", + configUrl : "{{resources}}/autoconf.js", + apiKey : "{{apikey}}", center : { // geolocate : true, location : "Nimes", diff --git a/samples-src/pages/2d/page-exportmap-bundle.html b/samples-src/pages/2d/page-exportmap-bundle.html index 4e537fe50..2c70f7c06 100644 --- a/samples-src/pages/2d/page-exportmap-bundle.html +++ b/samples-src/pages/2d/page-exportmap-bundle.html @@ -35,7 +35,8 @@

Export de l'état d'une carte.