{"id":20515583,"url":"https://github.com/ignf/openlayers-vs-maplibre","last_synced_at":"2026-04-22T09:06:30.208Z","repository":{"id":147293886,"uuid":"536580243","full_name":"IGNF/openlayers-vs-maplibre","owner":"IGNF","description":"Démonstrateur de comparaison OpenLayers et MapLibre","archived":false,"fork":false,"pushed_at":"2024-05-17T00:36:20.000Z","size":29308,"stargazers_count":1,"open_issues_count":13,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-05-17T01:42:15.177Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IGNF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-14T13:02:35.000Z","updated_at":"2024-05-30T02:55:43.043Z","dependencies_parsed_at":"2023-09-28T14:41:08.185Z","dependency_job_id":"e4ed0a5b-b108-4945-8061-49873ae6a4ff","html_url":"https://github.com/IGNF/openlayers-vs-maplibre","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IGNF/openlayers-vs-maplibre","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fopenlayers-vs-maplibre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fopenlayers-vs-maplibre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fopenlayers-vs-maplibre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fopenlayers-vs-maplibre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IGNF","download_url":"https://codeload.github.com/IGNF/openlayers-vs-maplibre/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fopenlayers-vs-maplibre/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32128713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T08:34:57.708Z","status":"ssl_error","status_checked_at":"2026-04-22T08:34:55.583Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T21:23:00.552Z","updated_at":"2026-04-22T09:06:30.193Z","avatar_url":"https://github.com/IGNF.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openlayers-vs-maplibre\n\n\u003e :warning: Ce démonstrateur n'est plus activement maintenu\n\nCe démonstrateur compare les possibilités des bibliothèques **OpenLayers** ([openlayers/openlayers](https://github.com/openlayers/openlayers)) et **MapLibre** ([maplibre/maplibre-gl-js](https://github.com/maplibre/maplibre-gl-js)) pour la visualisation de couches de tuiles raster (WMTS) et de tuiles vectorielles dans une interface cartographique incluant quelques fonctionnalités de navigation et de recherche.\n\n## Contexte\n\nL'IGN utilise davantage OpenLayers historiquement et développe et maintient notamment une [extension Geoportail OpenLayers](https://github.com/IGNF/geoportal-extensions/).\n\nLe développement des tuiles vectorielles comme mode de diffusion de données spatiales pose la question de la pertinence de l'usage de cette bibliothèque par rapport à une bibliothèque nativement conçue pour ce format tel MapLibre ([maplibre/maplibre-gl-js](https://github.com/maplibre/maplibre-gl-js)).\n\n## Fonctionnalités\n\nCe démonstrateur est constitué de 2 pages presque identiques, l'une construite avec OpenLayers, l'autre avec MapLibre, qui affichent :\n\n- un fond `PLANIGN` raster WMTS\n- une couche de tuiles vectorielles `PCI` (Plan Cadastral)\n- des contrôles de zoom et déplacement (+ rotation, inclinaison avec MapLibre)\n- une barre d'échelle\n- un gestionnaire de couches\n- une popup affichant les informations attributaires lorsque l'on clique sur un objet de la couche PCI\n\n### Le gestionnaire de couches\n\nPar rapport à celui d'OpenLayers, le gestionnaire de couches construit pour MapLibre est une arborescence qui contient le niveau pyramide (pci) et un sous-niveau pour chacune des `source-layer` décrite dans le style. Le niveau `layer` est trop fin car dans cette pyramide par exemple chaque source-layer est représentée dans plusieurs layer (contour, toponyme...).\n\n=\u003e On peut donc réaliser un gestionnaire de couche plus fin avec MapLibre qu'avec OpenLayers.\n\n### Sélection des objets\n\nAvec MapLibre, l'événement `onClick` est enregistré au niveau de la `layer` et on a donc plusieurs réactions au même endroit pour un même objet s'il est représenté plusieurs fois, ce qui entraîne plusieurs bulles d'information. Il a été nécessaire de tenter d'identifier les doublons de sélection pour ne pas avoir ces multiples infobulles.\n\nIl peut néanmoins toujours légitimement y avoir plusieurs objets différents en un même endroit.\n  \n## Documentation Développeur\n\n### Générer un build\n```\nyarn build-dev\nyarn build\n```\n\n### Générer un build en continu (watch)\n```\nyarn build:watch\n```\n\n### Lancer le serveur de développement (indépendant du build)\n```\nyarn start\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignf%2Fopenlayers-vs-maplibre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fignf%2Fopenlayers-vs-maplibre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignf%2Fopenlayers-vs-maplibre/lists"}