Map

A Map requires a DOM element, layer and optional dimensions
and event handlers. The simplest way to create one is in the window
onload handler with a TemplatedMapProvider and the id of a div with width and height set.

// name of a div element:var parent ='map';
// defaults to Google-style Mercator projection, so works// out of the box with OpenStreetMap and friends:var template ='http://tile.openstreetmap.org/{Z}/{X}/{Y}.png';
var provider =newMM.TemplatedMapProvider(template);
// without a size, it will expand to fit the parent:var map =newMM.Map(parent, provider);

Setting/getting visible area (extent) or center and zoom

To set the Location of the center of the map use setCenter(location).
To set the zoom level use setZoom(number). Or use
setCenterZoom(location,number) to set both the center and the zoom level at the same time:

Note that calling map.setCenter(map.getCenter()) should do
nothing, but calling map.setExtent(map.getExtent()) could result
in a zoom out to ensure that setExtent performs correctly.

Resizing

To set the map size (e.g. in a window.onresize handler) use setSize
and pass it a point or two numbers:

// the following are equivalent:
map.setSize(newMM.Point(600,400));
map.setSize(600,400);

Note that the map will automatically resize if you didn't supply
initial dimensions in the constructor and your CSS specifies
relative sizes such as percentages or ems.

Events / Callbacks

Map can report on several events using a simple callback system.
To be notified of map changes subscribe to some or all of the
following events: panned, zoomed, extentset, centered,
resized, drawn. Each callback will receive the current map as its first argument.

To make overlays that follow the map, or update parts of
the page when the map changes, the simplest callback to register is 'drawn':

Map also exposes a removeCallback method for keeping things
tidy, and uses dispatchCallback internally to notify listeners of changes.

We're considering changing to an extremely simple callback model
with only one event (perhaps only the 'drawn' event). We'd welcome your feedback on this.

Internal Map functions

At time of writing, Map also exposes several functions which
are only for internal use. We're working on moving the javascript patterns
we use for these objects so that these internal APIs don't leak
into your work. For the record, we don't expect you to use any
of the following methods (unless you're doing work on the
Modest Maps internals yourself, of course): getStats,
enforceLimits, draw, getTileComplete, requestRedraw,
getRedraw, createOrGetLayer, checkCache, getCenterDistanceCompare.

Callbacks and Queues

The CallbackManager and RequestManager classes are used internally
and should not considered stable APIs.

Namespace

The long name of Modest Maps, com.modestmaps, is by default aliased
to MM. If another
object wants to occupy MM, one can call MM.noConflict() and
Modest Maps will only inhabit its extended name, com.modestmaps.