From afff8582e35e5e71a8855fb33e997db519455448 Mon Sep 17 00:00:00 2001 From: jean-philippe bazonnais Date: Mon, 4 Dec 2023 14:32:35 +0100 Subject: [PATCH] POI osm (#20) --- src/css/app.scss | 1 + src/css/assets/filtrer.svg | 5 + src/css/map-buttons.css | 9 +- src/css/poi.css | 42 +++ src/css/tabs.css | 3 +- src/html/index.html | 1 + src/html/mapButtons.html | 2 + src/html/tabs/layermanagerWindow.html | 2 +- src/html/tabs/poiWindow.html | 3 + src/js/controls.js | 14 + src/js/data-layer/layers-config.json | 42 +++ src/js/data-layer/poi-osm-layer-config.json | 204 ++++++++++++ src/js/dom.js | 6 +- src/js/globals.js | 6 +- src/js/layer-group.js | 18 ++ src/js/layer-manager.js | 3 + src/js/layer-switcher.js | 19 +- src/js/map-buttons-listeners.js | 3 + src/js/nav.js | 16 + src/js/poi.js | 293 ++++++++++++++++++ src/js/state.js | 3 + webpack.dev.js | 2 +- .../data}/plan-ign-interactif-style.json | 0 www/data/poi-osm-sprite.json | 120 +++++++ www/data/poi-osm-sprite.png | Bin 0 -> 48979 bytes www/data/poi-osm-sprite@2x.json | 120 +++++++ www/data/poi-osm-sprite@2x.png | Bin 0 -> 48979 bytes www/data/poi-osm-style.json | 55 ++++ 28 files changed, 982 insertions(+), 10 deletions(-) create mode 100644 src/css/assets/filtrer.svg create mode 100644 src/css/poi.css create mode 100644 src/html/tabs/poiWindow.html create mode 100644 src/js/data-layer/poi-osm-layer-config.json create mode 100644 src/js/poi.js rename {data => www/data}/plan-ign-interactif-style.json (100%) create mode 100644 www/data/poi-osm-sprite.json create mode 100644 www/data/poi-osm-sprite.png create mode 100644 www/data/poi-osm-sprite@2x.json create mode 100644 www/data/poi-osm-sprite@2x.png create mode 100644 www/data/poi-osm-style.json diff --git a/src/css/app.scss b/src/css/app.scss index 5f6cdb12..32db6ef4 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -14,4 +14,5 @@ @use 'layer-catalogue.css'; @use 'layer-switcher.css'; @use 'my-account.css'; +@use 'poi.css'; @use 'media-queries.css'; diff --git a/src/css/assets/filtrer.svg b/src/css/assets/filtrer.svg new file mode 100644 index 00000000..68304472 --- /dev/null +++ b/src/css/assets/filtrer.svg @@ -0,0 +1,5 @@ + + +filtrer + + diff --git a/src/css/map-buttons.css b/src/css/map-buttons.css index 0756d435..2d0ebcb2 100644 --- a/src/css/map-buttons.css +++ b/src/css/map-buttons.css @@ -21,7 +21,8 @@ #sideBySideBtn, #layerManagerBtn, #geolocateBtn, -#compassBtn { +#compassBtn, +#filterPoiBtn { width: 40px; height: 40px; border-radius: 60px; @@ -59,6 +60,12 @@ bottom: calc(225px + env(safe-area-inset-bottom)); } +#filterPoiBtn { + background-image: url("assets/filtrer.svg"); + position: absolute; + top: calc(80px + env(safe-area-inset-top)); +} + @media (min-width: 615px), screen and (min-aspect-ratio: 1/1) and (min-width:400px) { #layerManagerBtn { bottom: calc(65px + env(safe-area-inset-bottom)); diff --git a/src/css/poi.css b/src/css/poi.css new file mode 100644 index 00000000..46530613 --- /dev/null +++ b/src/css/poi.css @@ -0,0 +1,42 @@ +.divPOIContainer {} + +.spanPOITitle { + text-align: left; + width: 100%; + font-family: "Open Sans"; + font-weight: bold; + font-size: 1.1em; +} + +.divPOIDisplayGoBackTime, +.divPOIDisplay { + display: flex; + flex-direction: row; + justify-content: space-between; + font-family: "Open Sans"; + padding-top: 15px; + align-items: center; +} + +.divPOIDisplay > span, +.divPOIDisplayGoBackTime > span { + max-width: 50%; + white-space: wrap; + text-align: left; + } + + +.divPOIFilterItems { + display: flex; + flex-direction: column; + width: 100%; + font-family: "Open Sans"; +} +.lblPOIFilterItem { + margin-bottom: 8px; + width: fit-content; +} +.inputPOIFilterItem {} + +#displayPOI {} +#displayPOIGoBackTime {} diff --git a/src/css/tabs.css b/src/css/tabs.css index 8a040fbc..6c13af8a 100644 --- a/src/css/tabs.css +++ b/src/css/tabs.css @@ -9,7 +9,8 @@ #directionsWindow, #directionsResultsWindow, #mypositionWindow, -#layerManagerWindow { +#layerManagerWindow, +#poiWindow { margin-top: 10px; position: relative; border-top-left-radius: 5px; diff --git a/src/html/index.html b/src/html/index.html index b9bf935e..c7372590 100644 --- a/src/html/index.html +++ b/src/html/index.html @@ -44,6 +44,7 @@ <%= require('html-loader!./tabs/mypositionWindow.html').default %> <%= require('html-loader!./tabs/myaccountWindow.html').default %> <%= require('html-loader!./tabs/informationsWindow.html').default %> + <%= require('html-loader!./tabs/poiWindow.html').default %> diff --git a/src/html/mapButtons.html b/src/html/mapButtons.html index db93a3dc..be081c45 100644 --- a/src/html/mapButtons.html +++ b/src/html/mapButtons.html @@ -8,3 +8,5 @@
+ +
diff --git a/src/html/tabs/layermanagerWindow.html b/src/html/tabs/layermanagerWindow.html index 3802c82b..64726af4 100644 --- a/src/html/tabs/layermanagerWindow.html +++ b/src/html/tabs/layermanagerWindow.html @@ -8,7 +8,7 @@
- +
diff --git a/src/html/tabs/poiWindow.html b/src/html/tabs/poiWindow.html new file mode 100644 index 00000000..4a75ca02 --- /dev/null +++ b/src/html/tabs/poiWindow.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/src/js/controls.js b/src/js/controls.js index cb0fbe66..95410464 100644 --- a/src/js/controls.js +++ b/src/js/controls.js @@ -6,6 +6,7 @@ import Isochrone from "./isochrone/isochrone"; import Position from "./my-position"; import Search from "./search"; import Compare from './compare'; +import POI from './poi'; /** * Ajout des contrôle à la fin du chargement de la carte @@ -15,6 +16,7 @@ import Compare from './compare'; * @see Position * @see Compare * @see Search + * @see POI */ const addControls = () => { const map = Globals.map; @@ -60,6 +62,18 @@ const addControls = () => { maxWidth: 150, unit: 'metric' }), "bottom-left"); + + // contrôle filtres POI + Globals.poi = new POI(map, {}); + Globals.poi.load() // promise ! + .then(() => { + // opérations possibles aprés le chargement des POI + console.debug("layer POI loaded !"); + }) + .catch((e) => { + // on ne capture pas les exceptions + console.error(e); + }); }); } diff --git a/src/js/data-layer/layers-config.json b/src/js/data-layer/layers-config.json index 77808a61..b8e8b77d 100644 --- a/src/js/data-layer/layers-config.json +++ b/src/js/data-layer/layers-config.json @@ -4283,6 +4283,48 @@ "quicklookUrl": "", "layerId": "PLAN.IGN.INTERACTIF$GEOPORTAIL:GPP:TMS", "defaultProjection": "EPSG:3857" + }, + "OSM.POI$GEOPORTAIL:GPP:TMS": { + "hidden": true, + "queryable": true, + "serviceParams": { + "id": "GPP:TMS", + "version": "1.0.0", + "serverUrl": { + "appign": "https://data.geopf.fr/tms/1.0.0/" + } + }, + "name": "OSM.POI", + "title": "POI OSM interactif", + "description": "", + "formats": [ + { + "current": true, + "name": "application/x-protobuf" + } + ], + "styles": [ + { + "name": "standard", + "title": "Style standard", + "current": true, + "url": "data/poi-osm-style.json" + } + ], + "globalConstraint": { + "crs": null, + "bbox": { + "left": -724011.531917197, + "right": 1095801.237496279, + "top": 6672646.821182753, + "bottom": 5009377.0856973175 + }, + "minScaleDenominator": null, + "maxScaleDenominator": null + }, + "quicklookUrl": "", + "layerId": "OSM.POI$GEOPORTAIL:GPP:TMS", + "defaultProjection": "EPSG:3857" } }, diff --git a/src/js/data-layer/poi-osm-layer-config.json b/src/js/data-layer/poi-osm-layer-config.json new file mode 100644 index 00000000..ca3b1109 --- /dev/null +++ b/src/js/data-layer/poi-osm-layer-config.json @@ -0,0 +1,204 @@ +[{ + "id": "commerce", + "name": "Commerce", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "alcohol", + "antiques", + "art", + "bakery", + "beauty", + "bicycle", + "books", + "butcher", + "car", + "car_parts", + "car_repair", + "cheese", + "chocolate", + "clothes", + "computer", + "confectionery", + "convenience", + "convenience;gas", + "cosmetics", + "deli", + "doityourself", + "dry_cleaning", + "e-cigarette", + "electronics", + "farm", + "florist", + "frozen_food", + "funeral_directors", + "furniture", + "garden_centre", + "gas", + "gift", + "greengrocer", + "hairdresser", + "hardware", + "hearing_aids", + "interior_decoration", + "jewelry", + "kiosk", + "kitchen", + "laundry", + "mall", + "marketplace", + "mobile_phone", + "motorcycle", + "newsagent", + "optician", + "pastry", + "seafood", + "shoes", + "sports", + "supermarket", + "tattoo", + "ticket", + "tobacco", + "toys", + "travel_agency", + "vacant", + "variety_store", + "wine", + "yes" + ] + }] + }, + { + "id": "culture_sports_loisirs", + "name": "Culture , Sports et Loisirs", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "casino", + "cinema", + "conference_centre", + "library", + "museum", + "sports_centre", + "swimming_pool", + "theatre", + "theme_park", + "zoo" + ] + }] + }, + { + "id": "hebergement", + "name": "Hébergement", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "camp_site", + "hotel", + "hut" + ] + }] + }, + { + "id": "lieux_remarquables", + "name": "Lieux remarquables", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "autrereligion", + "castle", + "christian", + "church_histo", + "grave_yard", + "lighthouse", + "peak", + "saddle", + "jewish", + "muslim", + "viewpoint", + "waterway" + ] + }] + }, + { + "id": "restauration", + "name": "Restauration", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "bar", + "restaurant" + ] + }] + }, + { + "id": "sante", + "name": "Santé", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "hospital", + "pharmacy" + ] + }] + }, + { + "id": "services_commodites", + "name": "Services et commodités", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "atm", + "information", + "picnic_site", + "post_office", + "toilets" + ] + }] + }, + { + "id": "services_publics", + "name": "Services publics", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "college", + "courthouse", + "fire_station", + "police", + "prison", + "school", + "townhall", + "university" + ] + }] + }, + { + "id": "transports", + "name": "Transports", + "visible": true, + "filters": [{ + "field": "symbo", + "attributs": [ + "aerodrome", + "bicycle_parking", + "bicycle_rental", + "bus_stop", + "charging_station", + "ferry_terminal", + "fuel", + "marina", + "parking", + "station" + ] + }] + } +] \ No newline at end of file diff --git a/src/js/dom.js b/src/js/dom.js index d42d50b3..1afc0977 100644 --- a/src/js/dom.js +++ b/src/js/dom.js @@ -15,6 +15,7 @@ const $backTopLeftBtn = document.getElementById("backTopLeftBtn"); const $compassBtn = document.getElementById("compassBtn"); const $layerManagerBtn = document.getElementById("layerManagerBtn"); const $sideBySideBtn = document.getElementById("sideBySideBtn"); +const $filterPoiBtn = document.getElementById("filterPoiBtn"); const $whiteScreen = document.getElementById("whiteScreen"); const $parameterScreenWindow = document.getElementById("parameterScreenWindow"); @@ -44,6 +45,7 @@ const $directionsResultsWindow = document.getElementById("directionsResultsWindo const $isochroneWindow = document.getElementById("isochroneWindow"); const $mypositionWindow = document.getElementById("mypositionWindow"); const $myaccountWindow = document.getElementById("myaccountWindow"); +const $poiWindow = document.getElementById("poiWindow"); export default { $search, @@ -80,5 +82,7 @@ export default { $myaccountWindow, $informationsWindow, $informationsText, - $informationsImg + $informationsImg, + $filterPoiBtn, + $poiWindow }; diff --git a/src/js/globals.js b/src/js/globals.js index 4ad66fa3..85c4f924 100644 --- a/src/js/globals.js +++ b/src/js/globals.js @@ -61,6 +61,9 @@ let menu = null; // Global Layer Manager let manager = null; +// Global POI filters +let poi = null; + // Scroll let maxScroll = (document.scrollingElement.scrollHeight - document.scrollingElement.clientHeight); let anchors = [0, maxScroll / 2.5, maxScroll]; @@ -93,5 +96,6 @@ export default { search, compare, menu, - manager + manager, + poi }; diff --git a/src/js/layer-group.js b/src/js/layer-group.js index 4d62949c..78bbec69 100644 --- a/src/js/layer-group.js +++ b/src/js/layer-group.js @@ -139,6 +139,23 @@ const addVisibility = (id, value) => { } }; +/** + * Modify visibility of a layer + * + * @param {*} id + * @param {*} name + * @param {*} value + */ +const addVisibilityByID = (id, name, value) => { + var layers = Globals.map.getStyle().layers; + for (var i = 0; i < layers.length; i++) { + if (layers[i].metadata && layers[i].metadata.group === id && layers[i].id === name) { + Globals.map.setLayoutProperty(layers[i].id, "visibility", (value) ? "visible" : "none"); + break; + } + } +}; + /** * Modify color N/B * @@ -308,6 +325,7 @@ export default { getGroupLayers, addOpacity, addVisibility, + addVisibilityByID, addGray, addColor }; \ No newline at end of file diff --git a/src/js/layer-manager.js b/src/js/layer-manager.js index 7deb9857..bbf1aee9 100644 --- a/src/js/layer-manager.js +++ b/src/js/layer-manager.js @@ -84,6 +84,9 @@ class LayerManager { this.layerSwitcher.event.addEventListener("removelayer", (e) => { var element = document.getElementById(e.detail.id); element.classList.remove('selectedLayer'); + if (e.detail.error) { + return; + } this.#updateLayersCounter(e.type); }); } diff --git a/src/js/layer-switcher.js b/src/js/layer-switcher.js index 6c95a827..4efa0921 100644 --- a/src/js/layer-switcher.js +++ b/src/js/layer-switcher.js @@ -69,7 +69,8 @@ class LayerSwitcher { * index : 0, * position : 0, * type: "vector", - * style: "http://.../style.json" ou [] + * style: "http://.../style.json" ou [], + * error : false * } * } */ @@ -513,6 +514,7 @@ class LayerSwitcher { style = this.layers[id].style; // url ! } else { // ex. geojson + this.layers[id].error = true; throw new Error(`Type not yet implemented or unknown : ${type}`); } // HACK @@ -554,7 +556,10 @@ class LayerSwitcher { // les sprites et les glyphs sont uniques sinon exceptions ! // mais, normalement, on ajoute que des couches IGN, on mutualise sur ces informations. // FIXME comment gerer les exceptions ? - this.map.setSprite(data.sprites); + if (!data.sprite.startsWith("http")) { + data.sprite = document.URL + data.sprite; + } + this.map.setSprite(data.sprite); this.map.setGlyphs(data.glyphs); return data; }) @@ -563,6 +568,7 @@ class LayerSwitcher { this.layers[id].style = data.layers; // sauvegarde ! }) .catch((e) => { + this.layers[id].error = true; throw new Error(e); }); } @@ -596,7 +602,8 @@ class LayerSwitcher { gray : false, visibility : true, index : this.index, - position : this.index // cf. #updatePosition() + position : this.index, // cf. #updatePosition() + error : false }; this.#addLayerContainer(id); this.#addLayerMap(id) @@ -622,6 +629,7 @@ class LayerSwitcher { ); }) .catch((e) => { + this.layers[id].error = true; throw e; }); @@ -634,6 +642,8 @@ class LayerSwitcher { * @public */ removeLayer(id) { + var berror = this.layers[id].error; + this.#removeLayerMap(id); this.#removeLayerContainer(id); delete this.layers[id]; @@ -649,7 +659,8 @@ class LayerSwitcher { new CustomEvent("removelayer", { bubbles: true, detail: { - id : id + id : id, + error : berror } }) ); diff --git a/src/js/map-buttons-listeners.js b/src/js/map-buttons-listeners.js index 24e4e446..03b3c7df 100644 --- a/src/js/map-buttons-listeners.js +++ b/src/js/map-buttons-listeners.js @@ -47,6 +47,9 @@ const addListeners = () => { // Bouton du gestionnaire de couches DOM.$layerManagerBtn.addEventListener("click", () => { Globals.menu.open("layerManager"); }); + // Bouton des filtres POI + DOM.$filterPoiBtn.addEventListener("click", () => { Globals.menu.open("poi"); }); + // Bouton Retour DOM.$backTopLeftBtn.addEventListener("click", () => { State.onBackKeyDown(); }); } diff --git a/src/js/nav.js b/src/js/nav.js index 1b8901b4..f68cb919 100644 --- a/src/js/nav.js +++ b/src/js/nav.js @@ -107,6 +107,12 @@ class MenuNavigation { var isSpecific = false; var isSpecificSize = false; switch (id) { + case "poi": + DOM.$search.style.display = "none"; + DOM.$backTopLeftBtn.classList.remove('d-none'); + DOM.$filterPoiBtn.classList.add('d-none'); + Globals.currentScrollIndex = 1; + break; case "myaccount": DOM.$search.style.display = "none"; DOM.$backTopLeftBtn.classList.remove('d-none'); @@ -141,6 +147,7 @@ class MenuNavigation { DOM.$sideBySideBtn.classList.add('d-none'); DOM.$layerManagerBtn.classList.add('d-none'); DOM.$geolocateBtn.classList.add('d-none'); + DOM.$filterPoiBtn.classList.add('d-none'); DOM.$whiteScreen.classList.remove('d-none'); DOM.$search.style.display = "none"; DOM.$backTopLeftBtn.classList.remove('d-none'); @@ -173,6 +180,7 @@ class MenuNavigation { DOM.$sideBySideBtn.classList.add('d-none'); DOM.$layerManagerBtn.classList.add('d-none'); DOM.$geolocateBtn.classList.add('d-none'); + DOM.$filterPoiBtn.classList.add('d-none'); DOM.$whiteScreen.classList.remove('d-none'); DOM.$backTopLeftBtn.classList.remove('d-none'); DOM.$backTopLeftBtn.style.boxShadow = "unset"; @@ -234,6 +242,11 @@ class MenuNavigation { var isSpecific = false; var isFinished = false; // hack pour search ! switch (id) { + case "poi": + DOM.$search.style.display = "flex"; + DOM.$backTopLeftBtn.classList.add('d-none'); + DOM.$filterPoiBtn.classList.remove('d-none'); + break; case "myaccount": DOM.$search.style.display = "flex"; DOM.$backTopLeftBtn.classList.add('d-none'); @@ -267,6 +280,7 @@ class MenuNavigation { document.body.style.overflowY = "auto"; DOM.$sideBySideBtn.classList.remove('d-none'); DOM.$layerManagerBtn.classList.remove('d-none'); + DOM.$filterPoiBtn.classList.add('d-none'); DOM.$geolocateBtn.classList.remove('d-none'); DOM.$whiteScreen.classList.add('d-none'); DOM.$backTopLeftBtn.classList.add('d-none'); @@ -319,6 +333,7 @@ class MenuNavigation { document.body.style.overflowY = "auto"; DOM.$sideBySideBtn.classList.remove('d-none'); DOM.$layerManagerBtn.classList.remove('d-none'); + DOM.$filterPoiBtn.classList.add('d-none'); DOM.$geolocateBtn.classList.remove('d-none'); DOM.$whiteScreen.classList.add('d-none'); DOM.$search.style.display = "flex"; @@ -383,6 +398,7 @@ class MenuNavigation { DOM.$searchresultsWindow.classList.add('d-none'); DOM.$sideBySideBtn.classList.remove('d-none'); DOM.$layerManagerBtn.classList.remove('d-none'); + DOM.$filterPoiBtn.classList.remove('d-none'); DOM.$geolocateBtn.classList.remove('d-none'); switch (id) { case "informations": diff --git a/src/js/poi.js b/src/js/poi.js new file mode 100644 index 00000000..c1b0aef5 --- /dev/null +++ b/src/js/poi.js @@ -0,0 +1,293 @@ +import maplibregl from "maplibre-gl"; + +import LayersConfig from './layer-config'; +import LayersGroup from './layer-group'; + +import PoiConfig from './data-layer/poi-osm-layer-config.json'; + +/** + * Contrôle sur le filtrage attributaire des POI osm + * @description + * La couche est active par defaut, les filtres de selections sont ajoutés et la visibilité est + * désactivée par defaut. + * @todo les POI "remonter le temps" + * @todo interactions avec les autres composants (ex. isochrone) + * @todo classe utilitaire pour le vectorTile ! + */ +class POI { + /** + * constructeur + * @param {*} map + * @param {*} options + * @returns + */ + constructor(map, options) { + this.options = options || { + target: document.getElementById("poiWindow"), + id: "OSM.POI$GEOPORTAIL:GPP:TMS" + }; + + this.opened = false; + + /** + * Couche POI active + */ + this.actived = true; + + this.map = map; + + this.target = this.options.target || document.getElementById("poiWindow"); + this.id = this.options.id || "OSM.POI$GEOPORTAIL:GPP:TMS"; + + this.#render(); + this.#listeners(); + + return this; + } + + /** + * chargement de la couche + * @public + */ + async load() { + var props = LayersConfig.getLayerProps(this.id); + var style = props.style; // url ! + + return fetch(style) + .then((response) => { + return response.json(); + }) + .then((data) => { + // INFO + // on ajoute les sources ! + // les sources des couches tuiles vectorielles ne sont pas pré chargées + // car on les connait que maintenant en lisant le fichier de style. + // l'id des source est different du nom de la couche pour le vecteur ! + for (const key in data.sources) { + if (Object.hasOwnProperty.call(data.sources, key)) { + const source = data.sources[key]; + // on ne peut pas ajouter la même source ! + if (! this.map.getStyle().sources[key]) { + this.map.addSource(key, source); + } + } + } + return data; + }) + .then((data) => { + // les sprites et les glyphs sont uniques sinon exceptions ! + // mais, normalement, on ajoute que des couches IGN, on mutualise sur ces informations. + if (!data.sprite.startsWith("http")) { + data.sprite = document.URL + data.sprite; + } + this.map.setSprite(data.sprite); + this.map.setGlyphs(data.glyphs); + return data; + }) + .then((data) => { + var layers = this.#createFilters(data.layers); + LayersGroup.addGroup(this.id, layers); + }) + .catch((e) => { + throw new Error(e); + }); + } + + /** + * creation des filtres de sélections dans les styles + * @param {*} layers + * @returns + */ + #createFilters(layers) { + var layersDisplay = layers; + var layersSelection = []; + for (let i = 0; i < layersDisplay.length; i++) { + const l = layersDisplay[i]; + for (let j = 0; j < PoiConfig.length; j++) { + const poi = PoiConfig[j]; + var layer = Object.assign({}, l); // clone + layer.id = poi.id + " - " + layer.id; + layer.filter = [ + "in", + poi.filters[0].field, + poi.filters[0].attributs + ].flat(); + layer.layout.visibility = (poi.visible) ? "visible" : "none"; + layer.metadata = { + thematic: poi.id + }; + layersSelection.push(layer); + } + } + return layersSelection; + } + + /** + * creation de l'interface + */ + #render() { + if (! this.target) { + console.warn(); + return; + } + + // on évite les ID sur le DOM afin de pouvoir multiplier ce code dans d'autres composants + const tplPOIThematics = (values) => { + var checked = null; + if (values.visible) { + checked = "checked"; + } + return ` + + `; + }; + + var strPOIThematics = ""; + for(let i = 0; i < PoiConfig.length; i++) { + var item = PoiConfig[i]; + strPOIThematics += tplPOIThematics({ + id : item.id, + name : item.name, + visible : item.visible // TODO + }); + } + + var tpltContainer = ` +
+ Point d'interêt +
+ Afficher les POI + +
+
+
+ ${strPOIThematics} +
+
+
+ POI remonter le temps + +
+
+ `; + + const stringToHTML = (str) => { + + var support = function () { + if (!window.DOMParser) return false; + var parser = new DOMParser(); + try { + parser.parseFromString('x', 'text/html'); + } catch (err) { + return false; + } + return true; + }; + + // If DOMParser is supported, use it + if (support()) { + var parser = new DOMParser(); + var doc = parser.parseFromString(str, 'text/html'); + return doc.body.firstChild; + } + + // Otherwise, fallback to old-school method + var dom = document.createElement('div'); + dom.innerHTML = str; + return dom; + + }; + + // transformation du container : String -> DOM + var container = stringToHTML(tpltContainer.trim()); + + if (! container) { + console.warn(); + return; + } + + // ajout du shadow DOM + const shadowContainer = container.attachShadow({ mode: "open" }); + shadowContainer.innerHTML = tpltContainer.trim(); + + if (! shadowContainer) { + console.warn(); + return; + } + + // ajout du container shadow + this.target.appendChild(shadowContainer); + } + + /** + * ajout d'ecouteurs + */ + #listeners() { + // rendre la couche POI active en affichant ou non tous les filtres sélectionnés + document.getElementById("displayPOI").addEventListener("change", (e) => { + this.actived = e.target.checked; + document.querySelectorAll(".inputPOIFilterItem").forEach((el) => { + if (el.checked) { + var layers = LayersGroup.getGroupLayers(this.id).filter((layer) => { return layer.metadata.thematic === el.name }); + for (let i = 0; i < layers.length; i++) { + const element = layers[i]; + LayersGroup.addVisibilityByID(this.id, element.id, this.actived); + } + } + }); + }); + // TODO rendre visible ou non tous les filtres + document.getElementById("displayPOIGoBackTime").addEventListener("change", (e) => { + console.debug(e); + }); + // rendre visible ou non le filtre si la couche POI est active sinon rien à faire + document.querySelectorAll(".inputPOIFilterItem").forEach((el) => { + el.addEventListener("change", (e) => { + if (!this.actived) { + return; + } + var layers = LayersGroup.getGroupLayers(this.id).filter((layer) => { return layer.metadata.thematic === e.target.name }); + for (let i = 0; i < layers.length; i++) { + const element = layers[i]; + LayersGroup.addVisibilityByID(this.id, element.id, e.target.checked); + } + }); + }); + } + + /** + * ouvre l'interface + * @public + */ + show() { + this.opened = true; + console.debug("show") + } + + /** + * ferme l'interface + * @public + */ + hide() { + this.opened = false; + console.debug("hide"); + } +} + +export default POI; \ No newline at end of file diff --git a/src/js/state.js b/src/js/state.js index bbe33e78..e7a6c4ce 100644 --- a/src/js/state.js +++ b/src/js/state.js @@ -59,6 +59,9 @@ const onBackKeyDown = () => { if (Globals.backButtonState === 'myposition') { Globals.menu.close('myposition'); } + if (Globals.backButtonState === 'poi') { + Globals.menu.close('poi'); + } } export default { diff --git a/webpack.dev.js b/webpack.dev.js index 9b66607f..4cf9ae11 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -13,7 +13,7 @@ module.exports = { }, devServer: { static: { - directory: path.resolve(__dirname, './data'), + directory: path.resolve(__dirname, './www/data'), publicPath: '/data' } }, diff --git a/data/plan-ign-interactif-style.json b/www/data/plan-ign-interactif-style.json similarity index 100% rename from data/plan-ign-interactif-style.json rename to www/data/plan-ign-interactif-style.json diff --git a/www/data/poi-osm-sprite.json b/www/data/poi-osm-sprite.json new file mode 100644 index 00000000..857e8923 --- /dev/null +++ b/www/data/poi-osm-sprite.json @@ -0,0 +1,120 @@ +{ +"atm_17" :{"x":18,"y":182,"width":17,"height":17,"pixelRatio":1}, +"atm_21" :{"x":128,"y":44,"width":21,"height":21,"pixelRatio":1}, +"autrereligion_17" :{"x":106,"y":44,"width":17,"height":17,"pixelRatio":1}, +"autrereligion_21" :{"x":194,"y":132,"width":21,"height":21,"pixelRatio":1}, +"bakery_17" :{"x":36,"y":200,"width":17,"height":17,"pixelRatio":1}, +"bakery_21" :{"x":194,"y":176,"width":21,"height":21,"pixelRatio":1}, +"bar_17" :{"x":120,"y":142,"width":17,"height":17,"pixelRatio":1}, +"bar_21" :{"x":22,"y":142,"width":21,"height":21,"pixelRatio":1}, +"bicycle_parking_17" :{"x":18,"y":164,"width":17,"height":17,"pixelRatio":1}, +"bicycle_parking_21" :{"x":62,"y":0,"width":21,"height":21,"pixelRatio":1}, +"bicycle_rental_17" :{"x":102,"y":142,"width":17,"height":17,"pixelRatio":1}, +"bicycle_rental_21" :{"x":194,"y":22,"width":21,"height":21,"pixelRatio":1}, +"bus_stop_17" :{"x":0,"y":80,"width":17,"height":17,"pixelRatio":1}, +"bus_stop_21" :{"x":194,"y":44,"width":21,"height":21,"pixelRatio":1}, +"camp_site_17" :{"x":150,"y":142,"width":17,"height":17,"pixelRatio":1}, +"camp_site_21" :{"x":128,"y":22,"width":21,"height":21,"pixelRatio":1}, +"casino_17" :{"x":198,"y":200,"width":17,"height":17,"pixelRatio":1}, +"casino_21" :{"x":106,"y":84,"width":21,"height":21,"pixelRatio":1}, +"castle_17" :{"x":44,"y":58,"width":17,"height":17,"pixelRatio":1}, +"castle_21" :{"x":172,"y":132,"width":21,"height":21,"pixelRatio":1}, +"charging_station_17" :{"x":76,"y":120,"width":17,"height":17,"pixelRatio":1}, +"charging_station_21" :{"x":216,"y":154,"width":21,"height":21,"pixelRatio":1}, +"christian_17" :{"x":22,"y":18,"width":17,"height":17,"pixelRatio":1}, +"christian_21" :{"x":194,"y":110,"width":21,"height":21,"pixelRatio":1}, +"church_histo_17" :{"x":108,"y":164,"width":17,"height":17,"pixelRatio":1}, +"church_histo_21" :{"x":0,"y":98,"width":21,"height":21,"pixelRatio":1}, +"cinema_17" :{"x":150,"y":124,"width":17,"height":17,"pixelRatio":1}, +"cinema_21" :{"x":66,"y":98,"width":21,"height":21,"pixelRatio":1}, +"college_17" :{"x":40,"y":120,"width":17,"height":17,"pixelRatio":1}, +"college_21" :{"x":216,"y":88,"width":21,"height":21,"pixelRatio":1}, +"conference_centre_17" :{"x":22,"y":120,"width":17,"height":17,"pixelRatio":1}, +"conference_centre_21" :{"x":106,"y":22,"width":21,"height":21,"pixelRatio":1}, +"courthouse_17" :{"x":36,"y":80,"width":17,"height":17,"pixelRatio":1}, +"courthouse_21" :{"x":172,"y":66,"width":21,"height":21,"pixelRatio":1}, +"divers_17" :{"x":94,"y":120,"width":17,"height":17,"pixelRatio":1}, +"divers_21" :{"x":106,"y":62,"width":21,"height":21,"pixelRatio":1}, +"ferry_terminal_17" :{"x":90,"y":200,"width":17,"height":17,"pixelRatio":1}, +"ferry_terminal_21" :{"x":128,"y":66,"width":21,"height":21,"pixelRatio":1}, +"fire_station_17" :{"x":126,"y":164,"width":17,"height":17,"pixelRatio":1}, +"fire_station_21" :{"x":150,"y":80,"width":21,"height":21,"pixelRatio":1}, +"fuel_17" :{"x":66,"y":142,"width":17,"height":17,"pixelRatio":1}, +"fuel_21" :{"x":128,"y":110,"width":21,"height":21,"pixelRatio":1}, +"grave_yard_17" :{"x":0,"y":200,"width":17,"height":17,"pixelRatio":1}, +"grave_yard_21" :{"x":216,"y":176,"width":21,"height":21,"pixelRatio":1}, +"greengrocer_17" :{"x":162,"y":200,"width":17,"height":17,"pixelRatio":1}, +"greengrocer_21" :{"x":216,"y":44,"width":21,"height":21,"pixelRatio":1}, +"hospital_17" :{"x":72,"y":200,"width":17,"height":17,"pixelRatio":1}, +"hospital_21" :{"x":106,"y":0,"width":21,"height":21,"pixelRatio":1}, +"hotel_17" :{"x":150,"y":44,"width":17,"height":17,"pixelRatio":1}, +"hotel_21" :{"x":216,"y":110,"width":21,"height":21,"pixelRatio":1}, +"hut_17" :{"x":0,"y":40,"width":17,"height":17,"pixelRatio":1}, +"hut_21" :{"x":216,"y":132,"width":21,"height":21,"pixelRatio":1}, +"information_17" :{"x":216,"y":198,"width":17,"height":17,"pixelRatio":1}, +"information_21" :{"x":216,"y":66,"width":21,"height":21,"pixelRatio":1}, +"jardin_17" :{"x":108,"y":200,"width":17,"height":17,"pixelRatio":1}, +"jardin_21" :{"x":172,"y":22,"width":21,"height":21,"pixelRatio":1}, +"jewish_17" :{"x":22,"y":0,"width":17,"height":17,"pixelRatio":1}, +"jewish_21" :{"x":128,"y":0,"width":21,"height":21,"pixelRatio":1}, +"library_17" :{"x":54,"y":182,"width":17,"height":17,"pixelRatio":1}, +"library_21" :{"x":128,"y":88,"width":21,"height":21,"pixelRatio":1}, +"lighthouse_17" :{"x":54,"y":200,"width":17,"height":17,"pixelRatio":1}, +"lighthouse_21" :{"x":194,"y":66,"width":21,"height":21,"pixelRatio":1}, +"mall_17" :{"x":126,"y":200,"width":17,"height":17,"pixelRatio":1}, +"mall_21" :{"x":84,"y":66,"width":21,"height":21,"pixelRatio":1}, +"marina_17" :{"x":84,"y":142,"width":17,"height":17,"pixelRatio":1}, +"marina_21" :{"x":44,"y":142,"width":21,"height":21,"pixelRatio":1}, +"marketplace_17" :{"x":36,"y":164,"width":17,"height":17,"pixelRatio":1}, +"marketplace_21" :{"x":40,"y":0,"width":21,"height":21,"pixelRatio":1}, +"museum_17" :{"x":72,"y":182,"width":17,"height":17,"pixelRatio":1}, +"museum_21" :{"x":0,"y":120,"width":21,"height":21,"pixelRatio":1}, +"muslim_17" :{"x":180,"y":200,"width":17,"height":17,"pixelRatio":1}, +"muslim_21" :{"x":62,"y":58,"width":21,"height":21,"pixelRatio":1}, +"parking_17" :{"x":108,"y":182,"width":17,"height":17,"pixelRatio":1}, +"parking_21" :{"x":150,"y":102,"width":21,"height":21,"pixelRatio":1}, +"peak_17" :{"x":18,"y":200,"width":17,"height":17,"pixelRatio":1}, +"peak_21" :{"x":0,"y":142,"width":21,"height":21,"pixelRatio":1}, +"pharmacy_17" :{"x":18,"y":40,"width":17,"height":17,"pixelRatio":1}, +"pharmacy_21" :{"x":84,"y":0,"width":21,"height":21,"pixelRatio":1}, +"picnic_site_17" :{"x":144,"y":200,"width":17,"height":17,"pixelRatio":1}, +"picnic_site_21" :{"x":172,"y":44,"width":21,"height":21,"pixelRatio":1}, +"police_17" :{"x":144,"y":182,"width":17,"height":17,"pixelRatio":1}, +"police_21" :{"x":0,"y":58,"width":21,"height":21,"pixelRatio":1}, +"post_office_17" :{"x":90,"y":164,"width":17,"height":17,"pixelRatio":1}, +"post_office_21" :{"x":84,"y":22,"width":21,"height":21,"pixelRatio":1}, +"prison_17" :{"x":54,"y":164,"width":17,"height":17,"pixelRatio":1}, +"prison_21" :{"x":40,"y":22,"width":21,"height":21,"pixelRatio":1}, +"restaurant_17" :{"x":72,"y":164,"width":17,"height":17,"pixelRatio":1}, +"restaurant_21" :{"x":44,"y":98,"width":21,"height":21,"pixelRatio":1}, +"saddle_17" :{"x":0,"y":182,"width":17,"height":17,"pixelRatio":1}, +"saddle_21" :{"x":216,"y":22,"width":21,"height":21,"pixelRatio":1}, +"school_17" :{"x":36,"y":182,"width":17,"height":17,"pixelRatio":1}, +"school_21" :{"x":194,"y":88,"width":21,"height":21,"pixelRatio":1}, +"sports_centre_17" :{"x":58,"y":120,"width":17,"height":17,"pixelRatio":1}, +"sports_centre_21" :{"x":172,"y":0,"width":21,"height":21,"pixelRatio":1}, +"station_17" :{"x":126,"y":182,"width":17,"height":17,"pixelRatio":1}, +"station_21" :{"x":194,"y":154,"width":21,"height":21,"pixelRatio":1}, +"supermarket_17" :{"x":88,"y":98,"width":17,"height":17,"pixelRatio":1}, +"supermarket_21" :{"x":22,"y":98,"width":21,"height":21,"pixelRatio":1}, +"swimming_pool_17" :{"x":62,"y":22,"width":17,"height":17,"pixelRatio":1}, +"swimming_pool_21" :{"x":22,"y":58,"width":21,"height":21,"pixelRatio":1}, +"theatre_17" :{"x":62,"y":40,"width":17,"height":17,"pixelRatio":1}, +"theatre_21" :{"x":84,"y":44,"width":21,"height":21,"pixelRatio":1}, +"theme_park_17" :{"x":18,"y":80,"width":17,"height":17,"pixelRatio":1}, +"theme_park_21" :{"x":150,"y":0,"width":21,"height":21,"pixelRatio":1}, +"toilets_17" :{"x":144,"y":164,"width":17,"height":17,"pixelRatio":1}, +"toilets_21" :{"x":172,"y":154,"width":21,"height":21,"pixelRatio":1}, +"townhall_17" :{"x":54,"y":80,"width":17,"height":17,"pixelRatio":1}, +"townhall_21" :{"x":194,"y":0,"width":21,"height":21,"pixelRatio":1}, +"university_17" :{"x":162,"y":182,"width":17,"height":17,"pixelRatio":1}, +"university_21" :{"x":150,"y":22,"width":21,"height":21,"pixelRatio":1}, +"viewpoint_17" :{"x":150,"y":62,"width":17,"height":17,"pixelRatio":1}, +"viewpoint_21" :{"x":0,"y":0,"width":21,"height":21,"pixelRatio":1}, +"waterway_17" :{"x":0,"y":164,"width":17,"height":17,"pixelRatio":1}, +"waterway_21" :{"x":172,"y":110,"width":21,"height":21,"pixelRatio":1}, +"zoo_17" :{"x":0,"y":22,"width":17,"height":17,"pixelRatio":1}, +"zoo_21" :{"x":216,"y":0,"width":21,"height":21,"pixelRatio":1}, +"aerodrome_17" :{"x":90,"y":182,"width":17,"height":17,"pixelRatio":1}, +"aerodrome_21" :{"x":172,"y":88,"width":21,"height":21,"pixelRatio":1} +} \ No newline at end of file diff --git a/www/data/poi-osm-sprite.png b/www/data/poi-osm-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6254ef13bc2a337f47d397b344a95293d882c7 GIT binary patch literal 48979 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 rS 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 literal 0 HcmV?d00001 diff --git a/www/data/poi-osm-sprite@2x.json b/www/data/poi-osm-sprite@2x.json new file mode 100644 index 00000000..857e8923 --- /dev/null +++ b/www/data/poi-osm-sprite@2x.json @@ -0,0 +1,120 @@ +{ +"atm_17" :{"x":18,"y":182,"width":17,"height":17,"pixelRatio":1}, +"atm_21" :{"x":128,"y":44,"width":21,"height":21,"pixelRatio":1}, +"autrereligion_17" :{"x":106,"y":44,"width":17,"height":17,"pixelRatio":1}, +"autrereligion_21" :{"x":194,"y":132,"width":21,"height":21,"pixelRatio":1}, +"bakery_17" :{"x":36,"y":200,"width":17,"height":17,"pixelRatio":1}, +"bakery_21" :{"x":194,"y":176,"width":21,"height":21,"pixelRatio":1}, +"bar_17" :{"x":120,"y":142,"width":17,"height":17,"pixelRatio":1}, +"bar_21" :{"x":22,"y":142,"width":21,"height":21,"pixelRatio":1}, +"bicycle_parking_17" :{"x":18,"y":164,"width":17,"height":17,"pixelRatio":1}, +"bicycle_parking_21" :{"x":62,"y":0,"width":21,"height":21,"pixelRatio":1}, +"bicycle_rental_17" :{"x":102,"y":142,"width":17,"height":17,"pixelRatio":1}, +"bicycle_rental_21" :{"x":194,"y":22,"width":21,"height":21,"pixelRatio":1}, +"bus_stop_17" :{"x":0,"y":80,"width":17,"height":17,"pixelRatio":1}, +"bus_stop_21" :{"x":194,"y":44,"width":21,"height":21,"pixelRatio":1}, +"camp_site_17" :{"x":150,"y":142,"width":17,"height":17,"pixelRatio":1}, +"camp_site_21" :{"x":128,"y":22,"width":21,"height":21,"pixelRatio":1}, +"casino_17" :{"x":198,"y":200,"width":17,"height":17,"pixelRatio":1}, +"casino_21" :{"x":106,"y":84,"width":21,"height":21,"pixelRatio":1}, +"castle_17" :{"x":44,"y":58,"width":17,"height":17,"pixelRatio":1}, +"castle_21" :{"x":172,"y":132,"width":21,"height":21,"pixelRatio":1}, +"charging_station_17" :{"x":76,"y":120,"width":17,"height":17,"pixelRatio":1}, +"charging_station_21" :{"x":216,"y":154,"width":21,"height":21,"pixelRatio":1}, +"christian_17" :{"x":22,"y":18,"width":17,"height":17,"pixelRatio":1}, +"christian_21" :{"x":194,"y":110,"width":21,"height":21,"pixelRatio":1}, +"church_histo_17" :{"x":108,"y":164,"width":17,"height":17,"pixelRatio":1}, +"church_histo_21" :{"x":0,"y":98,"width":21,"height":21,"pixelRatio":1}, +"cinema_17" :{"x":150,"y":124,"width":17,"height":17,"pixelRatio":1}, +"cinema_21" :{"x":66,"y":98,"width":21,"height":21,"pixelRatio":1}, +"college_17" :{"x":40,"y":120,"width":17,"height":17,"pixelRatio":1}, +"college_21" :{"x":216,"y":88,"width":21,"height":21,"pixelRatio":1}, +"conference_centre_17" :{"x":22,"y":120,"width":17,"height":17,"pixelRatio":1}, +"conference_centre_21" :{"x":106,"y":22,"width":21,"height":21,"pixelRatio":1}, +"courthouse_17" :{"x":36,"y":80,"width":17,"height":17,"pixelRatio":1}, +"courthouse_21" :{"x":172,"y":66,"width":21,"height":21,"pixelRatio":1}, +"divers_17" :{"x":94,"y":120,"width":17,"height":17,"pixelRatio":1}, +"divers_21" :{"x":106,"y":62,"width":21,"height":21,"pixelRatio":1}, +"ferry_terminal_17" :{"x":90,"y":200,"width":17,"height":17,"pixelRatio":1}, +"ferry_terminal_21" :{"x":128,"y":66,"width":21,"height":21,"pixelRatio":1}, +"fire_station_17" :{"x":126,"y":164,"width":17,"height":17,"pixelRatio":1}, +"fire_station_21" :{"x":150,"y":80,"width":21,"height":21,"pixelRatio":1}, +"fuel_17" :{"x":66,"y":142,"width":17,"height":17,"pixelRatio":1}, +"fuel_21" :{"x":128,"y":110,"width":21,"height":21,"pixelRatio":1}, +"grave_yard_17" :{"x":0,"y":200,"width":17,"height":17,"pixelRatio":1}, +"grave_yard_21" :{"x":216,"y":176,"width":21,"height":21,"pixelRatio":1}, +"greengrocer_17" :{"x":162,"y":200,"width":17,"height":17,"pixelRatio":1}, +"greengrocer_21" :{"x":216,"y":44,"width":21,"height":21,"pixelRatio":1}, +"hospital_17" :{"x":72,"y":200,"width":17,"height":17,"pixelRatio":1}, +"hospital_21" :{"x":106,"y":0,"width":21,"height":21,"pixelRatio":1}, +"hotel_17" :{"x":150,"y":44,"width":17,"height":17,"pixelRatio":1}, +"hotel_21" :{"x":216,"y":110,"width":21,"height":21,"pixelRatio":1}, +"hut_17" :{"x":0,"y":40,"width":17,"height":17,"pixelRatio":1}, +"hut_21" :{"x":216,"y":132,"width":21,"height":21,"pixelRatio":1}, +"information_17" :{"x":216,"y":198,"width":17,"height":17,"pixelRatio":1}, +"information_21" :{"x":216,"y":66,"width":21,"height":21,"pixelRatio":1}, +"jardin_17" :{"x":108,"y":200,"width":17,"height":17,"pixelRatio":1}, +"jardin_21" :{"x":172,"y":22,"width":21,"height":21,"pixelRatio":1}, +"jewish_17" :{"x":22,"y":0,"width":17,"height":17,"pixelRatio":1}, +"jewish_21" :{"x":128,"y":0,"width":21,"height":21,"pixelRatio":1}, +"library_17" :{"x":54,"y":182,"width":17,"height":17,"pixelRatio":1}, +"library_21" :{"x":128,"y":88,"width":21,"height":21,"pixelRatio":1}, +"lighthouse_17" :{"x":54,"y":200,"width":17,"height":17,"pixelRatio":1}, +"lighthouse_21" :{"x":194,"y":66,"width":21,"height":21,"pixelRatio":1}, +"mall_17" :{"x":126,"y":200,"width":17,"height":17,"pixelRatio":1}, +"mall_21" :{"x":84,"y":66,"width":21,"height":21,"pixelRatio":1}, +"marina_17" :{"x":84,"y":142,"width":17,"height":17,"pixelRatio":1}, +"marina_21" :{"x":44,"y":142,"width":21,"height":21,"pixelRatio":1}, +"marketplace_17" :{"x":36,"y":164,"width":17,"height":17,"pixelRatio":1}, +"marketplace_21" :{"x":40,"y":0,"width":21,"height":21,"pixelRatio":1}, +"museum_17" :{"x":72,"y":182,"width":17,"height":17,"pixelRatio":1}, +"museum_21" :{"x":0,"y":120,"width":21,"height":21,"pixelRatio":1}, +"muslim_17" :{"x":180,"y":200,"width":17,"height":17,"pixelRatio":1}, +"muslim_21" :{"x":62,"y":58,"width":21,"height":21,"pixelRatio":1}, +"parking_17" :{"x":108,"y":182,"width":17,"height":17,"pixelRatio":1}, +"parking_21" :{"x":150,"y":102,"width":21,"height":21,"pixelRatio":1}, +"peak_17" :{"x":18,"y":200,"width":17,"height":17,"pixelRatio":1}, +"peak_21" :{"x":0,"y":142,"width":21,"height":21,"pixelRatio":1}, +"pharmacy_17" :{"x":18,"y":40,"width":17,"height":17,"pixelRatio":1}, +"pharmacy_21" :{"x":84,"y":0,"width":21,"height":21,"pixelRatio":1}, +"picnic_site_17" :{"x":144,"y":200,"width":17,"height":17,"pixelRatio":1}, +"picnic_site_21" :{"x":172,"y":44,"width":21,"height":21,"pixelRatio":1}, +"police_17" :{"x":144,"y":182,"width":17,"height":17,"pixelRatio":1}, +"police_21" :{"x":0,"y":58,"width":21,"height":21,"pixelRatio":1}, +"post_office_17" :{"x":90,"y":164,"width":17,"height":17,"pixelRatio":1}, +"post_office_21" :{"x":84,"y":22,"width":21,"height":21,"pixelRatio":1}, +"prison_17" :{"x":54,"y":164,"width":17,"height":17,"pixelRatio":1}, +"prison_21" :{"x":40,"y":22,"width":21,"height":21,"pixelRatio":1}, +"restaurant_17" :{"x":72,"y":164,"width":17,"height":17,"pixelRatio":1}, +"restaurant_21" :{"x":44,"y":98,"width":21,"height":21,"pixelRatio":1}, +"saddle_17" :{"x":0,"y":182,"width":17,"height":17,"pixelRatio":1}, +"saddle_21" :{"x":216,"y":22,"width":21,"height":21,"pixelRatio":1}, +"school_17" :{"x":36,"y":182,"width":17,"height":17,"pixelRatio":1}, +"school_21" :{"x":194,"y":88,"width":21,"height":21,"pixelRatio":1}, +"sports_centre_17" :{"x":58,"y":120,"width":17,"height":17,"pixelRatio":1}, +"sports_centre_21" :{"x":172,"y":0,"width":21,"height":21,"pixelRatio":1}, +"station_17" :{"x":126,"y":182,"width":17,"height":17,"pixelRatio":1}, +"station_21" :{"x":194,"y":154,"width":21,"height":21,"pixelRatio":1}, +"supermarket_17" :{"x":88,"y":98,"width":17,"height":17,"pixelRatio":1}, +"supermarket_21" :{"x":22,"y":98,"width":21,"height":21,"pixelRatio":1}, +"swimming_pool_17" :{"x":62,"y":22,"width":17,"height":17,"pixelRatio":1}, +"swimming_pool_21" :{"x":22,"y":58,"width":21,"height":21,"pixelRatio":1}, +"theatre_17" :{"x":62,"y":40,"width":17,"height":17,"pixelRatio":1}, +"theatre_21" :{"x":84,"y":44,"width":21,"height":21,"pixelRatio":1}, +"theme_park_17" :{"x":18,"y":80,"width":17,"height":17,"pixelRatio":1}, +"theme_park_21" :{"x":150,"y":0,"width":21,"height":21,"pixelRatio":1}, +"toilets_17" :{"x":144,"y":164,"width":17,"height":17,"pixelRatio":1}, +"toilets_21" :{"x":172,"y":154,"width":21,"height":21,"pixelRatio":1}, +"townhall_17" :{"x":54,"y":80,"width":17,"height":17,"pixelRatio":1}, +"townhall_21" :{"x":194,"y":0,"width":21,"height":21,"pixelRatio":1}, +"university_17" :{"x":162,"y":182,"width":17,"height":17,"pixelRatio":1}, +"university_21" :{"x":150,"y":22,"width":21,"height":21,"pixelRatio":1}, +"viewpoint_17" :{"x":150,"y":62,"width":17,"height":17,"pixelRatio":1}, +"viewpoint_21" :{"x":0,"y":0,"width":21,"height":21,"pixelRatio":1}, +"waterway_17" :{"x":0,"y":164,"width":17,"height":17,"pixelRatio":1}, +"waterway_21" :{"x":172,"y":110,"width":21,"height":21,"pixelRatio":1}, +"zoo_17" :{"x":0,"y":22,"width":17,"height":17,"pixelRatio":1}, +"zoo_21" :{"x":216,"y":0,"width":21,"height":21,"pixelRatio":1}, +"aerodrome_17" :{"x":90,"y":182,"width":17,"height":17,"pixelRatio":1}, +"aerodrome_21" :{"x":172,"y":88,"width":21,"height":21,"pixelRatio":1} +} \ No newline at end of file diff --git a/www/data/poi-osm-sprite@2x.png b/www/data/poi-osm-sprite@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6254ef13bc2a337f47d397b344a95293d882c7 GIT binary patch literal 48979 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 rS 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 literal 0 HcmV?d00001 diff --git a/www/data/poi-osm-style.json b/www/data/poi-osm-style.json new file mode 100644 index 00000000..89f1a7f1 --- /dev/null +++ b/www/data/poi-osm-style.json @@ -0,0 +1,55 @@ +{ + "version": 8, + "name": "POI OSM", + "glyphs": "https://wxs.ign.fr/static/vectorTiles/fonts/{fontstack}/{range}.pbf", + "sprite": "data/poi-osm-sprite", + "sources": { + "poi_osm": { + "type": "vector", + "tiles": [ + "https://data.geopf.fr/tms/1.0.0/OSM.POI/{z}/{x}/{y}.pbf" + ] + } + }, + "transition": { + "duration": 300, + "delay": 0 + }, + "layers": [ + { + "id": "POI OSM 16et17", + "type": "symbol", + "source": "poi_osm", + "source-layer": "point_interet", + "minzoom": 15, + "maxzoom": 17, + "layout": { + "visibility": "visible", + "icon-image": "{symbo}_17" + } + }, + { + "id": "POI OSM 18et19", + "type": "symbol", + "source": "poi_osm", + "source-layer": "point_interet", + "minzoom": 17, + "layout": { + "visibility": "visible", + "symbol-placement": "point", + "text-field": "{texte}", + "text-size": 9, + "text-max-width": 9, + "text-allow-overlap": false, + "text-offset": [0, -0.9], + "text-padding": 3, + "text-anchor": "bottom", + "text-font": ["Source Sans Pro Bold Italic"], + "icon-image": "{symbo}_21" + }, + "paint": { + "text-color": "#0000CC" + } + } + ] +}