Release status: beta
|Description||Allows users to display maps and coordinate data using multiple mapping services.|
|Author(s)||Jeroen De Dauw, Yaron Koren and others|
|Last Version||0.6.6 (2010-08-26)|
|MediaWiki||1.15.* or higher|
Due to Maps modular build, modifying the mapping service of a map is as easy as changing a single map property! These mapping services include Google Maps, Yahoo! Maps, OpenLayers and OpenStreetMap. These also allow you to display maps with Google Earth, OpenStreetMaps, Bing maps and others. Examples of how to use Maps can be found here.
Semantic Maps is an extension built on top of maps, and adds semantic capabilities to it. When using Semantic MediaWiki, it is highly recommended to use Semantic Maps together with maps, since it will make coordinate insertion even easier.
Both Maps and Semantic Maps are partly based on Semantic Google Maps and Semantic Layers, and are meant to replace those extensions. Maps contains all functionality of Google Geocoder, and so also replaces this extension.
- 1 Setup
- 2 Download
- 3 Version
- 4 Supported languages
- 5 Settings
- 5.1 Available mapping services
- 5.2 Default mapping service
- 5.3 Available mapping features
- 5.4 Available geocoding services
- 5.5 Default geocoding service
- 5.6 Default map coordinates
- 5.7 Default map width
- 5.8 Default map height
- 5.9 Map size restrictions
- 5.10 Default map zoom
- 5.11 Default map title
- 5.12 Default map label
- 6 Contributing to the project
- 7 Work for hire
- 8 Getting support
- 9 Sites that use Maps
- 10 External links
- 11 See also
|Name||Required||Recommended Version||Supported Versions|
|MediaWiki||Yes||1.18 or above||1.17 or above|
|Validator||Yes||0.4.13||0.4.x later then 0.4.10|
For a complete list of downloads, including obsolete and experimental releases, go to the Google code download page. If you have MediaWiki 1.17 or above, simply get the latest version. If you are using MediaWiki 1.15.x or 1.16.x, get the latest 0.7.x release.
You can also download the code directly via SVN from the MediaWiki source code repository, at http://svn.wikimedia.org/svnroot/mediawiki/tags/extensions/Maps/REL_1_0_5. From a command line, you can call the following:
To get the latest changes, you can download the code directly from the trunk. Note that trunk requires MediaWiki 1.17 or above.
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Maps
For MediaWiki 1.15.x and 1.16.x installs, you can get the latest Maps 0.7.x code from this branch:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/branches/Maps0.7.x
Note that this is discouraged when stability is a big concern.
To update a branch, use:
- Semantic Maps always comes bundled with a compatible version of Maps.
- Semantic Bundle is a pre-packaged bundle of extensions for use with wikis that are based around the Semantic MediaWiki extension.
Compatibility and dependencies
You can see the dependencies of the current release in the box on the right. For a full list of dependency tables of all releases, see the Maps dependencies category.
In order to use Maps, you need to have Validator installed. If you get a distribution from this page, you don't need to bother this, since Validator comes bundled with every release, and will automatically be loaded by Maps. If you get Maps from SVN trunk, or a tag, you must make sure you also get Validator.
Once you have downloaded the code, place the 'Maps' directory within your MediaWiki 'extensions' directory. Then add the following code to your LocalSettings.php file:
# Maps require_once( "$IP/extensions/Maps/Maps.php" );
# API keys configuration $egGoogleMapsKey = ""; # Your Google Maps API key. Required for displaying Google Maps, and using the Google Geocoder services. $egYahooMapsKey = ""; # Your Yahoo! Maps API key. Required for displaying Yahoo! Maps.
If you don't already have them, you can obtain them at the Google Maps API page and Yahoo Maps API page. Note that the Google Maps API key is required for both displaying maps AND for geocoding (and therefore also required when you use display_address with a Yahoo! Map). Also note that use of the Google Maps API is free only if your site is accessible to the public; otherwise it costs money - read the Google Maps terms of service for further details.
Once you have successfully installed Maps, please add your wiki to the Sites that use Maps section.
Maps is currently at version 0.6.6 (2010-08-26). It is still be considered beta, since some small issues might be present. However, it has been tested quite thoroughly, and should not cause any big problems. Since this is the second minor update to 0.4.0, it's pretty stable.
- Version 0.5 (2009-12-17)
- Version 0.3 (2009-08-14)
- Version 0.2 (2009-07-29)
- Version 0.2.1 (2009-07-30)
- Version 0.2.2 (2009-08-01)
- Version 0.1 (2009-07-20)
Maps has support for English, Afrikaans, Arabic, Belarusian, Bulgarian, Breton, Bosnian, Catalan, German, Lower Sorbian, Greek, Spanish, Basque, Finnish, French, Friulian, Galician, Swiss German, Hebrew, Croatian, Upper Sorbian, Hungarian, Interlingua, Indonesian, Japanese, Ripoarisch, Luxembourgish, Macedonian, Dutch, Occitan, Polish, Piedmontese, Portuguese, Brazilian Portuguese, Romanian, Tarandíne, Russian, Slovak, Swedish, Thai, Vietnamese and others.
Maps allows you to configure a variety of settings, and so affect how the extension works. All settings are located in Maps_Settings.php, in the root of the extension. You can modify a setting by copying its code and placing it with the adapted value in LocalSettings.php, after the inclusion of Maps. Here you have a list of the common settings (the ones that affect all mapping services). For the specific settings, see the map services. Note that the settings file is documented, and should provide you with sufficient information to understand the working of all settings.
Available mapping services
Array containing all the services that will be made available to the user.
$egMapsAvailableServices = array('googlemaps', 'yahoomaps', 'openlayers', 'osm');
When not using a service, you might consider removing it's inclusion.
include_once $egMapsIP . '/GoogleMaps/Maps_GoogleMaps.php'; // Google Maps include_once $egMapsIP . '/OpenLayers/Maps_OpenLayers.php'; // OpenLayers include_once $egMapsIP . '/YahooMaps/Maps_YahooMaps.php'; // Yahoo! Maps include_once $egMapsIP . '/OpenStreetMap/Maps_OSM.php'; // OpenLayers optimized for OSM
Doing this will cause Maps to completely ignore it, and so improve performance.
Default mapping service
The default mapping service for each feature, which will be used when no valid service is provided by the user. This service needs to be enabled, if not, the first one from the available services will be taken. Note: The default service needs to be available for the feature you set it for, since it's used as a fall-back mechanism.
$egMapsDefaultServices = array('pf' => 'googlemaps');
This list contains all available features, and their feature code, which should be used as name in the $egMapsDefaultServices array.
- pf - parser functions - This default will be used for all display_ parser functions.
An additional fall-back value is present, that will be used in case no default is specified for a certain feature. This service needs to be enabled, if not, the first one from the available services will be taken.
$egMapsDefaultService = 'googlemaps';
Available mapping features
Array containing all the mapping features that will be made available to the user.
$egMapsAvailableFeatures['geocode'] = array( 'name' => 'Geocoding', 'class' => 'Geocoders', 'file' => 'Geocoders/Maps_Geocoders.php', 'local' => true, ); $egMapsAvailableFeatures['pf'] = array( 'name' => 'Parser Functions', 'class' => 'MapsParserFunctions', 'file' => 'ParserFunctions/Maps_ParserFunctions.php', 'local' => true, );
Removing an element will cause the corresponding feature to be unavailable.
Available geocoding services
Array containing all the geocoding services that will be made available to the user. The allowed values are 'yahoo', 'google' and 'geonames'.
Default geocoding service
The default geocoding service, which will be used when no service is provided by the user. This service needs to be enabled, if not, the first one from the available geocoding services will be taken.
$egMapsDefaultGeoService = 'geonames';
Default map coordinates
The default coordinates of the marker. This value will only be used when the user does not provide one.
$egMapsMapLat = '1'; $egMapsMapLon = '1';
Default map width
The default width of a map. These values will only be used when the user does not provide them.
$egMapsMapWidth = 600;
Default map height
The default height of a map. These values will only be used when the user does not provide them.
$egMapsMapHeight = 350;
Map size restrictions
The minimum and maximum width and height for all maps. First min, then max. Min needs to be smaller then max. When the height or width exceed their limits, they will be changed to the closest allowed value.
$egMapsSizeRestrictions = array( 'width' => array( 100, 1000 ), 'height' => array( 100, 1000 ), );
Default map zoom
The default zoom of a map. This value will only be used when the user does not provide one. Each service has it's own zoom setting. Please refer to the mapping services for more info.
Default map title
The default title for all markers. If set, it will be visible as text or title in a pop-up when the user clicks a marker.
$egMapsDefaultTitle = '';
Default map label
The default label for all markers. If set, it will be visible as text in a pop-up when the user clicks a marker.
$egMapsDefaultLabel = '';
Contributing to the project
Supporting further development
Are you using Maps, and want to show a sign of gratitude? You can make a donation to support further development.
Maps has been designed to be very extendible. It has several hooks that enable you to add support for new mapping services, geocoding services or entirely new features (such as parser functions) to it without having to change anything to the code of Maps. This enables you to add things to Maps in your own extension, or simply create a new extension to Maps. Semantic Maps is an example of an extension to Maps.
There are multiple important reasons why you should consider creating an extension to Maps, versus creating your own mapping extension. These include:
- Maps provides the scaffolding for most mapping functionality. If you want to add a new parser function, it'll have support for, amongst other things, geocoding and coordinate parsing without you having to ever bother these things. This reduces the amount of work you have, decreases the chances of bugs and code redundancy, and ensures the conventions toward the users.
- Installing one extension (possibly bundled with 3rd party mapping service implementations) is far easier then installing half a dozen for an end user. It also solves issues with incompatibility between multiple mapping services, which can cause extensions to break.
- Since Maps is the only mapping extension for MediaWiki that handles a true mapping service independent platform, and cause of that provides multiple mapping services and a variety of both common and specific features, users are far more likely to choose Maps, and it's extensions, instead of multiple individual extensions.
How to extend Maps
You can learn how to create your own extension for Maps by looking at the source code and doing some experimenting, or you can read the manual, that goes through all the required steps.
Bugs, patches and new features
If you found some bug and fixed it, please create a patch by going to the "Maps" directory, and typing:
svn diff >descriptivename.patch
Then add the patch to the bugs section of the future work page. Bug reports should also be added here. You can also send them to Jeroen De Dauw, jeroendedauw -at- gmail.com, and Yaron Koren, at yaron57 -at- gmail.com.
If you created new functionality for Maps, please contact one of the developers to discuss the best way to integrate it.
Translation of Maps is done through translatewiki.net. The translation for this extension can be found here. To add language values or change existing ones, you should create an account on translatewiki.net, then request permission from the administrators to translate a certain language or languages on this page (this is a very simple process). Once you have permission for a given language, you can log in and add or edit whatever messages you want to in that language.
Translations for this documentation, especially the extension description, are also welcome.
Work for hire
The following people can be hired to set up a wiki that uses Maps and Semantic Maps, along with other MediaWiki components.
- Jeroen De Dauw - You can also hire me to develop new features for Maps or it's extensions, or do optimizations for your specific needs. Just send me an email.
If you have any Maps related questions, you can add them to the Talk page. You can alternatively also place any questions on the Semantic MediaWiki mailing list, semediawiki-user. If possible, add "[Maps]" at the beginning of the subject line, to clarify the subject matter. Please contact the extensions authors only directly for urgent matters. Placing your questions on the talk page will create useful references for other people with similar problems.
Sites that use Maps
Are you using Maps? Then be sure to add your wiki to the top of this list, and feel free to link your favourite Maps-using articles!
- DeurneWiki: all about history of Dutch village Deurne (dutch)
- Природоматематическа гимназия "Акад. Иван Гюзелев"
- World of Arkmeda (customised Map Extension)
- 5000+ Locations in Holland
- NY Canals
- Hackerspace Gent
- Hackerspace Brussels
- Bluewater Wiki
- Bougna Citizen Information
- Children are Welcome
- Civic Studio "On the River" project
- Discourse DB
- Food Finds
- Semantic MediaWiki community wiki
- Men of War - Wiki
- Transit Unlimited
- BN's demo wiki
- syn2cat Hackerspace
- Web Community Wiki
- Blog of the author about Maps and Semantic Maps
- Powerpoint presentation about MediaWiki, SMW, Maps and Semantic Maps 0.5.3 used at a presentation in Gent, February 2010.
- Powerpoint presentation about Maps and Semantic Maps 0.4 used at Semantic MediaWiki Camp 2009.
- Semantic MediaWiki
- Semantic Bundle
- Google Maps - A non-semantic Google Maps extension.
- Math Functions - Contains the function #geodistance, which calculates the distance between two coordinates.