OpenLinkMap
Website has been dead since January 2023.
OpenLinkMap is a web application visualizing additional information on a OpenStreetMap background map.
The web application was released in January 2010. The project was initiated with the aim of visualizing mapped (Wikipedia-)links on a map (that's why the application is called OpenLinkMap).
At the beginning the project only visualized (Wikipedia-)links, but in a steady process of developing, the application was extended by many new features. Now OpenLinkMap offers a lot of useful features with the aim to show as much information from OpenStreetMap as useful as possible in a single application and to present the user all available information at a glance.
The application presents a lot of details of POIs, such as linked images, an abstract from Wikipedia, next bus stops or parkings, details about smoking, cuisine, internet access and much more. It also showed links to websites with departure information for public transport stops.
The aim of this project is to provide an extended map, visualizing data which is not visible in a standard tile map, and to add information from other web sources or link to them (wikipedia, departure times).
Alexander Matheisen, the founder of the project, announced shutdown of his service on 11. January 2016. The service has later been continued by Jens Kammann.
Features
- POI layer: open popups with additional information by clicking on markers
- worldwide data, daily updated
- markers are clustered for better clarity
- related Wikipedia article, translated into user's language
- related image, selected by tag or taken from a linked Wikipedia article
- show near objects like the next bus stop or parking
- display a POI's name in the user's preferred language
- indicator showing whether a POI is currently open or closed
- popups showing various additional information, e.g. smoking, opening hours, contact, website, cuisine, etc. (list of considered tags)
- country specific addressformats
- support for semicolon-separated values
- public-transport layer
- visualization of public transport stops and additional information such as accessibility
- linked operator websites with realtime departure information (up-to-date list of supported operators)
- built-in support for Osmosis TagTransform rulefiles
- hillshading
- the startposition of the map is automatically set by IP the browser geolocation API if possible
- search, based on Nominatim
- local bounded search
- display search results on the map
- permalinks
- support of touchscreen devices
- available in different languages: translation of names, wikipedia information and the user interface
- export HTML code to embed a small map with a popup into another website
- manipulate different options with URL parameters
Software being used
- osmfilter
- osmconvert
- osmupdate
- OpenLayers
- Osmosis
- Linux
- PostgreSQL
- PostGIS
- Apache, PHP, Javascript, CSS, ...
URL parameters
lang=<Language code according to ISO 639-1>
Selects a certain language for the user interface and sets which language to choose for internationalised name tags. If not set, the HTTP Accept-Language header is used.
id=<ID of an OSM object>
Combined with the type parameter, the details of the specified object can be accessed directly.
type=node|way|relation
Combined with the id parameter, the details of the specified object can be accessed directly.
q=<search>
With this parameter, a search is performed immediately when the page is loaded.
bounded=1|0
If 1, the search specified by the q parameter is to be run only within the visible part of the map. Only useful in combination with the lat, lon and zoom parameters.
lat=<Latitude coordinate>
Combined with lon and zoom, the initial map view can be specified.
lon=<Longitude coordinate>
Combined with lat and zoom, the initial map view can be specified.
zoom=<Zoomlevel>
Combined with lat and lon, the initial map view can be specified.
offset=<Difference between the local timezone and UTC in hours>
With this parameter, the local time zone of the user can be specified in order to display opening hours and the date of the last database update correctly.
API
Everyone is welcome to use the API for small projects. It is recommended to notify the administrator of the project when regular traffic is to be expected to avoid exceeding the server’s resources.
All API requests support JSONP. To use this format, you have to set the url parameters
format=json callback=<Callback-function>
POIs within a certain area
http://openlinkmap.org/api/list.php
Parameters:
bbox: Bounding box, values separated by comma in the format left,bottom,right,top format: csv, json; Default: csv
Response:
CSV file: <lon>|<lat>|<osmid>|<type>
Example: http://www.openlinkmap.org/api/list.php?bbox=6.67336,51.203552,6.679132,51.206406
Public transports within a certain area
http://openlinkmap.org/api/ptlist.php
Parameters:
bbox: Bounding box, values separated by comma in the format left,bottom,right,top format: csv, json; Default: csv
Response:
CSV file: <lon>|<lat>|<osmid>|<type>
Example: http://www.openlinkmap.org/api/ptlist.php?bbox=6.67336,51.203552,6.679132,51.206406
Details
http://openlinkmap.org/api/details.php
Parameters:
format: text (formatted HTML), xml, json; Default: xml id: OSM ID of the requested object type: Type of the requested object: node/way/relation offset: Difference between the local time zone and UTC in hours. Default: 0 lang: Preferred language as ISO 639-1 code. Default: HTTP Accept-Language header
Response:
XML, JSON or formatted HTML
Example: http://www.openlinkmap.org/api/details.php?id=18530948&type=way
Extended Details
http://openlinkmap.org/api/extdetails.php
Parameters:
format: text (formatted HTML), xml, json; Default: xml id: OSM ID of the requested object type: Type of the requested object: node/way/relation offset: Difference between the local time zone and UTC in hours. Default: 0 lang: Preferred language as ISO 639-1 code. Default: HTTP Accept-Language header
Response:
XML, JSON or formatted HTML
Example: http://www.openlinkmap.org/api/extdetails.php?id=18530948&type=way
Near objects
http://openlinkmap.org/api/nextobject.php
Parameters:
lat: latitude of requested position (needed in connection with lon, if no OSM-object is requested; otherwise not needed) lon: longitude of requested position (needed in connection with lat, if no OSM-object is requested; otherwise not needed) type: Type of the requested object: node/way/relation (needed in connection with id, if no position is requested; otherwise not needed) id: OSM ID of the requested object (needed in connection with type, if no position is requested; otherwise not needed) format: text (formatted HTML), xml, json; Default: text
Response:
XML, JSON or formatted HTML
The returned distance is only air-line distance!
Example: http://www.openlinkmap.org/api/nextobject.php?id=80148145&type=way&format=xml
Last database update
http://openlinkmap.org/api/timestamp.php
Parameters:
lang: Preferred language as ISO 639-1, e.g. needed for selecting the strings in the correct language; standardvalue: lang from HTTP_ACCEPT_LANGUAGE with highest priority format: text (simple plain text), xml, json; Default: xml offset: Difference in hours between user's timezone and UTC (needed for calculating the difference between current timestamp and last update); Default: 0
Response:
XML, JSON or plain text
With this request you can get the timestamp of the last database update and the age of the data.
Example: http://www.openlinkmap.org/api/timestamp.php?format=xml
Name
http://openlinkmap.org/api/name.php
Parameters:
lang: Preferred language as ISO 639-1, e.g. needed for selecting the name in the correct language; standardvalue: lang from HTTP_ACCEPT_LANGUAGE with highest priority format: text (simple plain text), xml, json; Default: text id: OSM ID of the requested object type: Type of the requested object: node/way/relation
Response:
XML, JSON or plain text
With this request you can get the name of an object (in an specified language).
Example: http://www.openlinkmap.org/api/name.php?format=xml&id=18530948&type=way&format=xml
Userlanguage
http://openlinkmap.org/api/userlang.php
Parameters:
none
Response:
Preferred language as ISO 639-1.
Returns the language which has the highest priority in the user settings, detected by HTTP Accept-Language header.
IP-Location
http://openlinkmap.org/api/ippos.php
Parameters:
format: text (simple plain text), xml, json; Default: text
Returns the position of the user, detected by IP.
Tag-Translation
http://openlinkmap.org/api/tagtranslation.php
Parameters:
lang: Preferred language as ISO 639-1 tag: One or more tags to translate, split with ",". Key and value are connected with "=" (like in the example below). format: text (simple plain text), xml, json; Default: text
Returns the translation of one or more tags.
Example: http://www.openlinkmap.org/api/tagtranslation.php?lang=en&tag=amenity.fuel,shop.bakery
Public transport details
http://openlinkmap.org/api/ptdetails.php
Parameters:
format: text (formatted HTML), xml, json; Default: xml id: OSM ID of the requested object type: Type of the requested object: node/way/relation offset: Difference between the local time zone and UTC in hours. Default: 0 lang: Preferred language as ISO 639-1 code. Default: HTTP Accept-Language header
Response:
XML, JSON or formatted HTML
Example: http://www.openlinkmap.org/api/ptdetails.php?id=80725474&type=node
Embed map in another website
You can embed a small map with a marker and a popup in your website:
<iframe width="420" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://www.openlinkmap.org/embed.php?id=<OSM-ID>&type=<node|way|relation>" style="border: 1px solid black"></iframe>
There is also a mode where you can embed a small slippymap with all points shown in OpenLinkMap:
<iframe width="420" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://www.openlinkmap.org/small.php?lat=<LAT>&lon=<LON>&zoom=<ZOOM>" style="border: 1px solid black"></iframe>
Tagging
POI-Layer
Necessary tags
A POI has to contain at least one of the following tags to be shown on this layer. You can find more information about each tag and valid values on their wikipages.
- wikipedia=*
- wikipedia:*=*
- contact:phone=*
- website=*
- url=*
- phone=*
- fax=*
- email=*
- addr:email=*
- image=*
- url:official=*
- contact:website=*
- addr:phone=*
- phone:mobile=*
- contact:mobile=*
- addr:fax=*
- contact:email=*
- contact:fax=*
- image:panorama=*
- opening_hours=*
Additional tags
There are some more tags which are considered in the popups. You can find more information about each tag and valid values on their wikipages.
- name=* und name:LANGUAGE=*
- addr=*
- fee=*
- toll=*
- ref=*
- capacity=*
- service_times=*
- ele=*
- operator=*
- image=*
- description=*
- stars=*
- cuisine=*
- biergarten=*
- beer_garden=*
- smoking=*
- brewery=*
- microbrewery=*
- internet_access=*
- population=*
- disused=*
- fuel=*
- iata=* und icao=*
- wheelchair=*, wheelchair:toilets=*, wheelchair:rooms=*, wheelchair:access=*, wheelchair:places=*
- car_wash=yes
- car_repair=yes
- shop=kiosk
- kiosk=yes
Public-transport-Layer
Necessary tags
A POI has to contain at least one of the following tags to be shown on this layer. You can find more information about each tag and valid values on their wikipages.
- amenity=bus_station
- highway=bus_stop
- highway=platform
- railway=station
- railway=halt
- railway=tram_stop
- railway=platform
- public_transport=platform
Additionally, the object must have a name=* tag.
Additional tags
There are some more tags which are considered in the popups. You can find more information about each tag and valid values on their wikipages.
- name=* und name:LANGUAGE=*
- wikipedia=*
- wikipedia:*=*
- website=*
- url=*
- url:official=*
- contact:website=*
- operator=*
- shelter=*
- bench=*
- bin=*
- tactile_paving=*
- wheelchair=*
- image=*
Depending on the rulefile for linked departure times, there are some more tags considered, like ref=*, uic_ref=*, ibnr_ref=*, etc.
Valid values
There are some tags with more than one valid value format which can be interpreted correctly:
Information | Keys | Valid values |
---|---|---|
Wikipedia article in specified language | http://de.wikipedia.org/wiki/Köln de:Köln | |
Wikipedia article in specified language | http://de.wikipedia.org/wiki/Köln de:Köln Köln | |
wikipedia article in english | Cologne | |
Note: Only one tag is needed to link a wikipedia article correctly! If it is the same article, the link to an article in another language can be found out by the Wikipedia-API. | ||
Mobile phone | +49-1234-56789 +49 1234 56789 | |
Fax |
|
+49-1234-56789 +49 1234 56789 |
Website |
|
www.... http://www... http://... https://www... https://... |
Image |
|
complete URL of image or image page; due to legal problems only images from Wikimedia Commons are displayed |
Contributors
- rurseekatze (Project founder, does not run the website any more)
Available languages
- English
- French
- German
- Italian
- Japanese
- Nederlands
- Russian
There is a language missing in this list? Help us to translate OpenLinkMap or this wikipage into another language! You can do this either on Transifex, or you translate the Gettext-files from the Github-Repository into your language and send these file to me. Contact me for more information!
Bugs / New Features / Ideas / TODOs
- add more UI languages
- add more background map styles
- improve parsing of opening hours: dates, months, holidays; show whether a POI opens or closes in the next x minutes
- add routing feature
- show complete ways and areas
- ruler feature
- improve browser support
- popup-shadows
- show small flag indicating cuisine=*
- include weather and local time of citys/countrys
- add edit-mode like wheelmap.org
- better design, effects with CSS3
- better support of mobile devices
- show names of near objects in userlanguage if possible
- include translated background maps, dependend on user's preferred language
- add edit link to sidebar
- show a loading indicator while loading an image
- Bugfix: sometimes popups cannot be closed
- differentiate between different POI-categories by color or icons
- show circle around user's position
- panorama feature
- filter POIs by wikipedia/image/website-tags
- adjust centroids to Mapnik
- show tooltips with name of a POI by hovering markers
- show search results layer above POI-layer
- show type of POI (e.g. an icon in the popups)
- show number of clustered points in clustermarkers
- add permalinks to save search request
- country- and language-dependent format of update timestamp
- jump to the top of the extended details (otherwise search results are shown before and you have to scroll down)
- Bugfix: some browsers do not load near objects
- show description tagged with description:<lang>=*
- detect and show syntax errors in opening_hours=*
- add tag for (free) wifi availability
- daily data update - process starts at 01:00 and finishes about 05:00
- support addr:place=* for viewing addresses
- bug: use wheelchair:toilets instead toilets:wheelchair (correct value)
Contribute
Contributors are welcome to help as programmers, translators or designers. Please contact me if you want to contribute.
Mapping: The usability of this map depends on the data. Please use your knowledge to keep the mapped information up-to-date and insert more details!
Programming: You created an interesting new feature or fixed a bug in the existing code? Please send me your code and I will add it.
Translating: OpenLinkMap wants to be available for many users and in many languages. Please translate the application or this wiki page in other languages!
Design: The current design is not very good. Please help to improve it or improve the support in many browsers.
Ressources: OpenLinkMap is currently just a project run in my free time, so needed resources like hardware or domains are limited. You are welcome to support me with these resources!
Bug reports, browsertests and feature suggestions are desired. Please contact me.
Download
- Download the latest development state from the Github Repository [ dead link (web archive) ]
- Download older, but stable releases [ dead link (web archive) ]
The commit history can be seen in the Git-Repository [ dead link (web archive) ]. The Changelog [ dead link (web archive) ] lists up all changes between the published versions.
Own developments
Everybody is allowed to use OpenLinkMap as a base for own development, if this is compatible to the terms and conditions of the GNU General Public License Version 3. In exceptional case I also allow the usage under modified conditions!
My free time is limited and the development of OpenLinkMap already costs a lot of time, which means I do not develop applications by request! I can only help by answering questions related to my code or the setup.
Contact
(to be added)
Credits
- OpenLinkMap's hosting is kindly supported by CSL Computer Service Langenbach GmbH
- Map and overlays are displayed by using OpenLayers
- The icon is taken from the Oxygen-Iconset, licensed under LGPLv3
- gulp21 and Mitja supported me sometimes
- Gulp21 helped creating CSS3-animations and the Wikipedia parsing code
- The search is provided by Nominatim
- Peter Büttner improved the code
- Daniele Forsi created the italian translation
- NothisIm created the russian translation
- The domain is sponsored by joker.com
- Many thanks to Markus Weber, who added new features to his programs osmfilter, osmconvert und osmupdate and supported me in using them
- Last but not least a lot of other people who collaborated by reporting bugs or suggesting new features
- Osmosis is used to update the data.
- The position of an IP is detected by using GeoLite City database
- Shu Higashi created the japanese translation
Links
- Sourcecode
- FacilMap/API/POIs — OpenLinkMap Layer for OpenLayers