How to develop custom maps?


how would I develop a tool where I can look at an OSM map and then have some kind of settings dialog where I can say for example switch on/off buildings, or switch off all roads which are highway=service. And so on.

What would be the right toolset? I have no idea where to start, so if someone can point me to a tool set or any other hint …

Appreciate your input. Thanks,

You can start at the OSM wiki at

I am not aware that there is any webservice that can display OSM based maps and switch of certain map elements by mouseclick or similar.

you can also look at and search for “custom” or “style” …

thanks thats a good start to search for. Maybe an additional question:

I assume I can download the data for a given region as XML or whatever format, manipulate that data and then display it. Anyone a pointer how to

a) get the data in a parsable format
b) how to display the data


Mapbox have some tools like, TileMile, that might do the job, or you can try maperitive.

You can get daily snapshots of some regions from geofabrik:
Later on, you might want to set up your own tile server.

see for alternative download options.

and how to convert raw OSM data into any kind of graphic.


A sort of an example for POIs is here

In that application you can select what features to draw on top of the base map but you can’t change the rendering of a base map. Making also the base map into dynamic and simple to customise is easy if you can set up a traditional WMS service with user selectable map layers. A rather outdated document about this is at
You can test what dynamic could mean with the following requests if my demo server happens to be up

  1. Draw primary highways from OSM data
    [,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=(tags @> ‘highway=>primary’)
    ](,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=(tags @> ‘highway=>primary’))
  2. Draw primary highways which do not have any maxspeed tag from OSM data
    [,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=(tags @> ‘highway=>primary’) AND not (tags ? ‘maxspeed’)](,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=(tags @> ‘highway=>primary’) AND not (tags ? ‘maxspeed’))