This project is about the creation of an application that will let users create collaborative maps with XWiki, where each point or area on the map will be associated with structured data.

Typical use cases

  • As an employee of a town hall, I can create with my colleagues a map showcasing the main city points of interest: museums, gardens, libraries, swimming pools etc. When clicking on a point of interest, a popup displays information about the place, and gives access to a page containing further information.
  • As a professional guide, I can create a path linking various points of interest and display it on the map.
  • As an editor, I can choose the user experience from predefined experiences combining media, timelines, paths etc. also known as "story maps".
  • As a city planner, I can describe a city planning project with my collaborators, drawing various shapes on the map (polygons, circles, squares, etc.) and associating content with each shape. I can also manage several layers of data and choose which one(s) to display.
  • As a user, I can, directly from the map, search across a large number of data elements, by using a contextual search widget that displays the results as a list on top of the map. When selecting one result, the map focuses on its location.
  • As a user, I can use the application efficiently from a mobile device.
  • As a user, I can be geolocalized and view my current position on the map and I can get instructions on how to get from my current location to a given point of interest on the map (in my preferred language, if possible).
  • As an administrator, I can configure the map background: I can choose from existing background configurations, or I can create custom map backgrounds using external services such as Mapbox.
  • As an administrator, I can configure external geographical data sources, for instance to display on my map some entries fetched from Wikipedia. 
  • As an administrator, I can make the map background available in offline mode (on a specific geographical area), so that it can be embedded in an ePub file.


  • For advanced features such as custom layers and shapes, the application will primarily target the usage of the OpenStreetMap API.

See also



Developer profile



Successfully terminated


Due to several reasons, as opposed to the proposal, the project had been started early from 18 May, 2019.

Project Design Page:
Project Repository:
Daily Progress:
Extension Page:


Create interactive maps easily, share locations and associate structured data with areas.


Old Architecture

The old architecture was based on map editors for creating maps.

Week 0 [18 May - 28 May]
Implement markers and popups.
Create map editor for simple map and path map.

New Architecture

The new architecture uses queries to gather map items to be displayed on the map. Map items are object pages that can be included in the map through a query (solr query). Map items include point, path, shape and indoor structures.
Basic entities that make up the application are map, point, path, shape and indoor structure.

Week 1 [29 May - 02 June]
Implement maps that use query to gather data.
Create a class for points whose object added to a page make the page a point of interest.

Week 2 [03 June - 09 June]
Implement custom and reusable Solr Search Macros to generate JSON from map query.
Implement filterable list in maps.
Implement map item search.

Week 3 [10 June - 16 June]
Improve map styling.
Fix bugs.
Implement dedicated popups.
Combine location and map item search.
Implement results for map item search.

Week 4 [17 June - 22 June]
Create demo maps.
Create Map Data Importer. (Thanks to Stephane)
Implement location and item search.
Implement facets.
Create tests.

Week 5 [8 July - 14 July]
Implement custom marker icons.
Add fullscreen mode.
Support for preserving map state.
Addition of map scale, map size and custom attribution in map options.
Prepare documentation for first release.

Week 6 [15 July - 21 July]
Release the first version of application.
Separate advanced options of map.
Support for custom facet fields.
Implement paths as map items.

Week 7 [22 July - 28 July]
Improve Point structure.
Create Point Editor.
Support for generating path between a number of points.

Week 8 [29 July - 4 August]
Implement shapes.
Implement Shape Editor.
Change shapes to use GeoJSON.
Improve map previews.
Dedicated editor for point objects.

Week 9 [5 August - 11 August]
Dedicated editor for creating shape objects.
Implement Leaflet.Editable for creating and editing shapes.
Option to specify custom classes for points.

Week 10 [12 August - 18 August]
Improve points.
Add include popup option for maps.
Allow editing of points by specifying latitude and longitude. (Latitude and longitude were hidden before)
Create template provider for paths.
Update application homepage to show Point, Path and Shape objects.
Implement shape styling.
Implement point options.

Week 11 [19 August - 26 August]
Add support for circle shape.
Implement indoor structures as map items.
Fork and edit leaflet-indoor to work with the latest version of leaflet so it is usable.
Implement map editor for creating points and shapes.
Fix errors, make improvements and optimize overall code.
Prepare complete documentation for second release.


Get Connected