{"id":15202893,"url":"https://github.com/indoorequal/maplibre-gl-indoorequal","last_synced_at":"2026-01-03T15:17:01.387Z","repository":{"id":39912706,"uuid":"260904891","full_name":"indoorequal/maplibre-gl-indoorequal","owner":"indoorequal","description":"A maplibre-gl.js plugin to display data from indoor=","archived":false,"fork":false,"pushed_at":"2025-10-06T04:51:11.000Z","size":14698,"stargazers_count":39,"open_issues_count":3,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-06T06:41:48.493Z","etag":null,"topics":["indoor","indoor-map","indoorequal","maplibre-gl-js","maplibre-plugins","openstreetmap"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indoorequal.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-03T12:04:42.000Z","updated_at":"2025-10-06T04:51:14.000Z","dependencies_parsed_at":"2024-06-08T06:22:15.127Z","dependency_job_id":"44ffeac2-7825-4595-b307-f8d0208ee07d","html_url":"https://github.com/indoorequal/maplibre-gl-indoorequal","commit_stats":{"total_commits":176,"total_committers":4,"mean_commits":44.0,"dds":"0.15909090909090906","last_synced_commit":"499875227c192b92404d867f7b4c721dd39c3819"},"previous_names":["indoorequal/mapbox-gl-indoorequal"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/indoorequal/maplibre-gl-indoorequal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indoorequal%2Fmaplibre-gl-indoorequal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indoorequal%2Fmaplibre-gl-indoorequal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indoorequal%2Fmaplibre-gl-indoorequal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indoorequal%2Fmaplibre-gl-indoorequal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indoorequal","download_url":"https://codeload.github.com/indoorequal/maplibre-gl-indoorequal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indoorequal%2Fmaplibre-gl-indoorequal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000653,"owners_count":26082817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["indoor","indoor-map","indoorequal","maplibre-gl-js","maplibre-plugins","openstreetmap"],"created_at":"2024-09-28T04:07:18.752Z","updated_at":"2025-10-08T20:29:44.114Z","avatar_url":"https://github.com/indoorequal.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# maplibre-gl-indoorequal ![build](https://img.shields.io/github/actions/workflow/status/indoorequal/maplibre-gl-indoorequal/ci.yml?branch=master) [![npm](https://img.shields.io/npm/v/maplibre-gl-indoorequal)](https://www.npmjs.com/package/maplibre-gl-indoorequal)\n\nmaplibre-gl-indoorequal is a [maplibre-gl][] plugin to display indoor data from [indoor=][].\n\nIt provides:\n\n*   load vector tiles from indoorequal.org tile server or your own\n*   display GeoJSON data\n*   a default style of the indoor tiles\n*   a way to customize the style and load your sprites\n*   a level control to change the level displayed on the map\n*   a programatic API to list the levels available and set the level displayed\n\n[**See the demo**](https://indoorequal.github.io/maplibre-gl-indoorequal).\n\n![](./demo.gif)\n\nDiscover:\n\n*   the frontend: \u003chttps://github.com/indoorequal/indoorequal.org\u003e\n*   the backend: \u003chttps://github.com/indoorequal/indoorequal\u003e\n\n## Install\n\nRecommended versions:\n\n*   **maplibre-gl** **3.0.0** or newer\n\n**With NPM**\n\n    npm install --save maplibre-gl-indoorequal\n\n**In the browser**\n\n```html\n\u003cscript src=\"https://unpkg.com/maplibre-gl-indoorequal@latest/dist/maplibre-gl-indoorequal.umd.min.js\"\u003e\u003c/script\u003e\n\u003clink href=\"https://unpkg.com/maplibre-gl-indoorequal@latest/maplibre-gl-indoorequal.css\" rel=\"stylesheet\" /\u003e\n```\n\n## Example\n\nGet your free key at [indoorequal.com](https://indoorequal.com).\n\n```javascript\nimport maplibregl from 'maplibre-gl';\nimport IndoorEqual from 'maplibre-gl-indoorequal';\nimport 'maplibre-gl-indoorequal/maplibre-gl-indoorequal.css';\n\nconst map = new maplibregl.Map({\n  container: 'map',\n  style: 'https://demotiles.maplibre.org/style.json',\n  center: [2.3601072, 48.876853],\n  zoom: 18\n});\n\nconst indoorEqual = new IndoorEqual(map, { apiKey: 'mykey' });\nmap.addControl(indoorEqual);\n```\n\n## Loading the default sprite\n\nThe default style make uses of a sprite that has to be loaded manually\nas [maplibre-gl][] require an absolute path. The sprite is already builded\nand available in the `sprite` directory.\n\nTo load the sprite, use the `loadSprite` method with the absolute path\nto the sprite and its name `/directory-to-change/indoorequal`.\n\n**Usage with [Parcel](https://parceljs.org/)**\n\nInstall the\n[parcel-plugin-static-files-copy](https://github.com/elwin013/parcel-plugin-static-files-copy)\npackage and add to your `package.json`:\n\n    \"staticFiles\": {\n      \"staticPath\": \"node_modules/maplibre-gl-indoorequal/sprite\"\n    },\n\nThen load the sprite:\n\n```javascript\nconst indoorequal = new IndoorEqual(map, { apiKey: 'myKey' });\nindoorequal.loadSprite('/indoorequal');\n```\n\n**Usage with [webpack](https://webpack.js.org/)**\n\nInstall the\n[copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin)\npackage and add to your webpack config:\n\n```javascript\nconst CopyPlugin = require('copy-webpack-plugin');\n\nmodule.exports = {\n  plugins: [\n    new CopyPlugin({\n      patterns: [\n        { from: 'node_modules/maplibre-gl-indoorequal/sprite' },\n      ],\n    }),\n  ],\n};\n```\n\nThen load the sprite:\n\n```javascript\nconst indoorequal = new IndoorEqual(map, { apiKey: 'myKey' });\nindoorequal.loadSprite('/indoorequal');\n```\n\n**Usage with [vite](https://vitejs.dev/)**\n\nInstall the\n[vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy)\npackage and add to your vite config:\n\n```javascript\nimport { viteStaticCopy } from 'vite-plugin-static-copy'\n\nexport default {\n  plugins: [\n    viteStaticCopy({\n      targets: [\n        {\n          src: 'node_modules/maplibre-gl-indoorequal/sprite,\n          dest: 'indoorequal'\n        }\n      ]\n    })\n  ]\n}\n```\n\nThen load the sprite:\n\n```javascript\nconst indoorequal = new IndoorEqual(map, { apiKey: 'myKey' });\nindoorequal.loadSprite('/indoorequal');\n```\n\n## API\n\n\u003c!-- Generated by documentation.js. Update this documentation by updating the source code. --\u003e\n\n#### Table of Contents\n\n*   [IndoorEqual](#indoorequal)\n    *   [Parameters](#parameters)\n    *   [Properties](#properties)\n    *   [remove](#remove)\n    *   [on](#on)\n        *   [Parameters](#parameters-1)\n    *   [off](#off)\n        *   [Parameters](#parameters-2)\n    *   [onAdd](#onadd)\n    *   [onRemove](#onremove)\n    *   [setLevel](#setlevel)\n        *   [Parameters](#parameters-3)\n    *   [updateLevel](#updatelevel)\n        *   [Parameters](#parameters-4)\n    *   [loadSprite](#loadsprite)\n        *   [Parameters](#parameters-5)\n    *   [setHeatmapVisible](#setheatmapvisible)\n        *   [Parameters](#parameters-6)\n*   [IndoorEqual#levelschange](#indoorequallevelschange)\n*   [IndoorEqual#levelchange](#indoorequallevelchange)\n\n### IndoorEqual\n\nLoad the indoor= source and layers in your map.\n\n#### Parameters\n\n*   `map` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** the maplibre-gl instance of the map\n*   `options` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n\n    *   `options.url` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** Override the default tiles URL (\u003chttps://tiles.indoorequal.org/\u003e).\n    *   `options.geojson` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** GeoJSON data with with key as layer name and value with geojson features\n    *   `options.apiKey` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** The API key if you use the default tile URL (get your free key at [indoorequal.com](https://indoorequal.com)).\n    *   `options.layers` **[array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)?** The layers to be used to style indoor= tiles. Take a look a the [layers.js file](https://github.com/indoorequal/maplibre-gl-indoorequal/blob/master/src/layers.js) file and the [vector schema](https://indoorequal.com/schema)\n    *   `options.heatmap` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** Should the heatmap layer be visible at start (true : visible, false : hidden). Defaults to true/visible.\n\n#### Properties\n\n*   `level` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** The current level displayed\n*   `levels` **[array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)** The levels that can be displayed in the current view\n\nReturns **[IndoorEqual](#indoorequal)** `this`\n\n#### remove\n\nRemove any layers, source and listeners and controls\n\n#### on\n\nAdd an event listener\n\n##### Parameters\n\n*   `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** the name of the event\n*   `fn` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** the function to be called when the event is emitted\n\n#### off\n\nRemove an event listener.\n\n##### Parameters\n\n*   `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** the name of the event\n*   `fn` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** the same function when on() was called\n\n#### onAdd\n\nAdd the level control to the map\nUsed when adding the control via the map instance: map.addControl(indoorEqual)\n\n#### onRemove\n\nRemove the level control\nUsed when removing the control via the map instance: map.removeControl(indoorEqual)\n\n#### setLevel\n\nSet the displayed level.\n\n##### Parameters\n\n*   `level` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** the level to be displayed\n\n#### updateLevel\n\nSet the displayed level.\n\n##### Parameters\n\n*   `level` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** the level to be displayed\n\n**Meta**\n\n*   **deprecated**: Use setLevel instead\n\n#### loadSprite\n\nLoad a sprite and add all images to the map\n\n##### Parameters\n\n*   `baseUrl` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** the baseUrl where to load the sprite\n*   `options` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n\n    *   `options.update` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** Update existing image (default false)\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)** It resolves an hash of images.\n\n#### setHeatmapVisible\n\nChange the heatmap layer visibility\n\n##### Parameters\n\n*   `visible` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** True to make it visible, false to hide it\n\n### IndoorEqual#levelschange\n\nEmitted when the list of available levels has been updated\n\nType: [array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)\n\n### IndoorEqual#levelchange\n\nEmitted when the current level has been updated\n\nType: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\n\n## Develop\n\n**Build the plugin and watch for changes**\n\n    yarn dev\n\n**Run tests**\n\n    yarn test [--watch]\n\n**Build a new version**\n\n    yarn build\n\n**Generate the documentation**\n\n    yarn doc\n\n**Generate the sprite**\n\n    yarn sprite\n\n## License\n\nBSD\n\n[indoor=]: https://indoorequal.org/\n\n[maplibre-gl]: https://github.com/maplibre/maplibre-gl-js\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findoorequal%2Fmaplibre-gl-indoorequal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findoorequal%2Fmaplibre-gl-indoorequal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findoorequal%2Fmaplibre-gl-indoorequal/lists"}