Choosing a Web Mapping Platform

Purpose: To help web developers select the best web mapping application for their requirements.
Status: Watch out - this page needs updating! This is not an official OSGeo document but just a snap shop from late 2006.
== Choosing a Web Mapping Platform for your Application ==
There are a great many web mapping platforms available to someone starting a new project. If you are new to this world ... or perhaps have a different type of project that won't work with the platform that you are familiar with, this page should help you decide which platform is right for your project.
A web mapping platform is a toolkit that helps you build a web mapping application. It may or may not depend on a particular server technology (like MapServer or MapGuide). This page focuses primarily on Open Source browser-based clients (not the servers).
Note that many of the platforms discussed below are very similar in most respects. There is a move afoot to consolidate some of the core components of these platforms into a single shared library ... which will further blur the distinctions.
The major web mapping platforms are (each needs to be linked to a separate page that describes the project in more detail, esp the benefits to a potential user):
* MapServer
* MapBuilder
* Mapbender
* Chameleon 
* MapGuide 
* OpenLayers 
* ka-Map
* CartoWeb 
* deegree iGeoPortal
I categorize these clients into two separate categories, each with two sub-categories ... this helps me sort out which platforms most closely match the type of application I am trying to build. At that point, I would go through the specific features of the contenders to figure out which one to actually use.
The two main categories are:
* How templates are implemented
* How maps are generated
=== Templates ===
In a web mapping platform, a template is simply the HTML that gets sent to the browser. All the web mapping platforms fall into one or both of the following sub-categories.
* Managed template. A managed template is one that the toolkit manages for you. The actual HTML is typically hidden from the application designer, and some sort of GUI interface is provided for setting up the look and feel of the application
* Unmanaged template. An unmanaged template is one that the toolkit uses, but doesn't manage for you. The actual HTML is hand-crafted by the application designer.
=== Maps ===
In a web mapping platform, maps seem to be used in two different ways (this is arguable for sure). The first is client-side. The second is server-side.
* Client Side. This type of platform uses pure OGC web services and manages the map and layer state entirely in the client.
* Server Side. This type of platform uses a server (MapServer or MapGuide) to generate the map, and relies primarily on the server's API to do so.
Undoubtedly, most platforms can do both. However, in my experience, each platform falls more into one of these categories due to its original architecture.
=== Where the projects ===
 managed | unmanaged
 |
 mapbender | mapbuilder
client | OpenLayers (2)
 | deegree iGeoPortal
 -----------
-----------------| WebMap.js |------------
 -----------
 |
 | chameleon
server mapguide | ka-map (1)
 | CartoWeb (3)
 |
(1) ka-Map is actually a client side app and can do client-side direct from WMS but its not the primary mechanism and the default install requires a server side component.
(2) OpenLayers can do server-side from ka-Map, but its not the primary mechanism
(3) HTML is actually totally separated from the code with a templating system. However the templating system is not managed through a GUI