Options
To dictate & restrict what the map can and should do, regardless of its contents, it needs some guidance!
It provides options that can be categorized into three main parts:
Initial positioning Defines the location of the map when it is first loaded
Permanent rules Defines restrictions that last throughout the map's lifetime
Event handling Defines methods that are called on specific map events
Initial Positioning
Changing these properties after the map has already been built for the first time will have no effect: they only apply on initialisation.
To control the map programatically, use a MapController
: Controllers & Cameras.
One part of MapOptions
responsibilities is to define how the map should be positioned when first loaded. There's two ways to do this (that are incompatible):
initialCenter
(LatLng
) &initialZoom
initialCameraFit
by bounds ():
CameraFit.bounds
by bounds ():
CameraFit.insideBounds
by coordinates ():
CameraFit.coordinates
It is possible to also set the map's initialRotation
in degrees, if you don't want it North (0°) facing initially.
If rotation is enabled/allowed, if using initialCameraFit
, prefer defining it by coordinates for a more intended/tight fit.
Permanent Rules
One part of MapOptions
responsibilities is to define the restrictions and limitations of the map and what users can/cannot do with it.
Some of the options are described elsewhere in this documentation, in context. In addition, the API docs show all the available options, and below is a partial list of options:
cameraConstraint
camera bounds inside bounds:
CameraConstraint.bounds
camera center inside bounds:
CameraConstraint.center
unconstrained (default):
CameraConstraint.unconstrained
maxZoom
andminZoom
Sets a hard limit on the maximum and minimum amounts that the map can be zoomedinteractionOptions
Configures the gestures that the user can use to interact with the map - for example, disable rotation or configure cursor/keyboard rotation
Instead of maxZoom
(or in addition to), consider setting maxNativeZoom
per TileLayer
instead, to allow tiles to scale (and lose quality) on the final zoom level, instead of setting a hard limit.
Custom CRS
FM does have some support for using alternative CRSs.
Custom CRSs