Extension:Kartographer

The Kartographer extension lets you display maps (based around OpenStreetMap) in wiki pages. It was specifically designed in order to run on Wikimedia sites such as Wikivoyage and Wikipedia, although it can be used on any wiki.

Usage
Kartographer defines the wikitext tags  and , which both display a map on the page. See Help:Extension:Kartographer for how to call these tags.

Implementation
Kartographer makes use of a suite of open-source, open-data tools for displaying maps:
 * On the client side (within the browser):
 * Leaflet, a JavaScript mapping library
 * On the server side:
 * Kartotherian, a map tile service developed by the Wikimedia Foundation, which itself contains code from Mapbox
 * Generating the data in advance:
 * Tilerator, a tile pre-generation service also developed by the Wikimedia Foundation
 * OpenStreetMap, an open map data source, the source for the map data as well as for most of the points of interest (POIs).

For more information on these, see Maps. For more information on the production aspects of running these services, see the Wikitech Maps page.

General goals

 * A simple method to insert a map into an article without requiring common.js code changes
 * Ability to add extra information (marks, area, popups, text, links) to the map
 * Ability to gather map usage statistics (KPI) to better gauge how and what should be improved.
 * TBD: experimentation - if the user is aware of the privacy implications, the map should be able to show external data from non-production source, e.g. wmflabs. Static, server-side rendered images will not include the extra data added via this method until the extra data source is hosted in the secure production environment and can be shown without the user action.

WikiVoyage goals
Wikivoyage tends to have a large number of points of interest (POIs), such as museums and restaurants, listed on a page (see example and scroll down to the "See" section). Each POI is usually added with a template, but all of them should appear on the same map. Also, each POI should be referable by showing an icon with a number, both in the text of the article, and on the map:
 * Ability to incrementally add features to the map. For example, each usage of the restaurant template adds a single POI, and the map shows all of them.
 * Added features need to be indexable. E.g. the first restaurant template would show [1] on the page, and map would show POI as a clickable [1] element. There could be multiple index counters at the same time, each for its own type of POIs.