Bigemap API

Get started

<header>
  <script src='https://127.0.0.1/bigemap.js'></script>
  <link href='https://127.0.0.1/bigemap.css' rel='stylesheet' />
</header>
<script>
// Provide your access token
BM.accessToken = '<your access token here>';
// Create a map in the div #map
var map = BM.map('map', 'bigemap.dc-street');
</script>

Map

API各种类中的核心部分,用来在页面中创建地图并操作地图。

Usage example

// initialize the map on the "map" div with a given center and zoom
var map = BM.map('map', 'bigemap.dc-map-streets', {
    center: [51.505, -0.09],
    zoom: 13
});

Creation

Factory Description
BM.map(<String> id, <String> mapid?, <Map options> options?) 给定<div>元素的ID以及可选的地图ID和地图选项Map options实例化地图对象。
BM.map(<HTMLElement> el, <String> mapid?, <Map options> options?) 给定<div> HTML元素以及可选的地图ID和地图选项Map options实例化地图对象。

Options

Option Type Default Description
preferCanvas Boolean false 是否Path应在渲染Canvas器上渲染。默认情况下,所有Paths都在SVG渲染器中呈现。

Control options

Option Type Default Description
attributionControl Boolean true Whether a attribution control is added to the map by default.
zoomControl Boolean true Whether a zoom control is added to the map by default.

Interaction Options

Option Type Default Description
closePopupOnClick Boolean true 如果您不希望在用户单击地图时关闭弹出窗口,请将其设置为false
boxZoom Boolean true Whether the map can be zoomed to a rectangular area specified by dragging the mouse while pressing the shift key.
doubleClickZoom Boolean|String true Whether the map can be zoomed in by double clicking on it and zoomed out by double clicking while holding shift. If passed 'center', double-click zoom will zoom to the center of the view regardless of where the mouse was.
dragging Boolean true Whether the map be draggable with mouse/touch or not.
zoomSnap Number 1 强制地图的缩放级别始终为此的倍数,尤其是在fitBounds()或缩放后。 默认情况下,缩放级别会捕捉到最接近的整数; 较低的值(例如0.50.1)允许更大的粒度。 值0表示缩放后的缩放级别fitBounds或者缩放。
zoomDelta Number 1 控制地图的缩放级别多少后改变 zoomIn(), zoomOut(), 按键+-,或者使用缩放控件。小于1(例如0.5)的值允许更大的粒度。
trackResize Boolean true 地图是否自动处理浏览器窗口调整大小以更新自身。
combineMode String 'combine' 地图源组合模式,用于多地图id组合加载,支持combine`overlay`两种模式。

Panning Inertia Options

Option Type Default Description
inertia Boolean * If enabled, panning of the map will have an inertia effect where the map builds momentum while dragging and continues moving in the same direction for some time. Feels especially nice on touch devices. Enabled by default unless running on old Android devices.
inertiaDeceleration Number 3000 The rate with which the inertial movement slows down, in pixels/second².
inertiaMaxSpeed Number Infinity Max speed of the inertial movement, in pixels/second.
easeLinearity Number 0.2
worldCopyJump Boolean false With this option enabled, the map tracks when you pan to another "copy" of the world and seamlessly jumps to the original one so that all overlays like markers and vector layers are still visible.
maxBoundsViscosity Number 0.0 If maxBounds is set, this option will control how solid the bounds are when dragging the map around. The default value of 0.0 allows the user to drag outside the bounds at normal speed, higher values will slow down map dragging outside bounds, and 1.0 makes the bounds fully solid, preventing the user from dragging outside the bounds.

Keyboard Navigation Options

Option Type Default Description
keyboard Boolean true Makes the map focusable and allows users to navigate the map with keyboard arrows and +/- keys.
keyboardPanDelta Number 80 Amount of pixels to pan when pressing an arrow key.

Mousewheel options

Option Type Default Description
scrollWheelZoom Boolean|String true Whether the map can be zoomed by using the mouse wheel. If passed 'center', it will zoom to the center of the view regardless of where the mouse was.
wheelDebounceTime Number 40 Limits the rate at which a wheel can fire (in milliseconds). By default user can't zoom via wheel more often than once per 40 ms.
wheelPxPerZoomLevel Number 60 How many scroll pixels (as reported by BM.DomEvent.getWheelDelta) mean a change of one full zoom level. Smaller values will make wheel-zooming faster (and vice versa).

Touch interaction options

Option Type Default Description
tap Boolean true Enables mobile hacks for supporting instant taps (fixing 200ms click delay on iOS/Android) and touch holds (fired as contextmenu events).
tapTolerance Number 15 The max number of pixels a user can shift his finger during touch for it to be considered a valid tap.
touchZoom Boolean|String * Whether the map can be zoomed by touch-dragging with two fingers. If passed 'center', it will zoom to the center of the view regardless of where the touch events (fingers) were. Enabled for touch-capable web browsers except for old Androids.
bounceAtZoomLimits Boolean true Set it to false if you don't want the map to zoom beyond min/max zoom and then bounce back when pinch-zooming.

Map State Options

Option Type Default Description
crs CRS BM.CRS.EPSG3857 使用的 坐标参考系统。当你不确定坐标系是什么时请不要更改。
center LatLng undefined 初始化地图的地理中心
zoom Number undefined 初始化地图的缩放
minZoom Number * 地图的最小视图。如果没有指定,并且至少有一个GridLayer或者TileLayer是在地图中,那么他们的最低minZoom选项将被用来代替。
maxZoom Number * 地图的最大视图。如果没有指定,并且至少有一个GridLayer或者TileLayer在地图中,他们的maxZoom选项中最高的将被用来代替地图的最大视图。
layers Layer[] [] 初始化后加载到地图上的图层
maxBounds LatLngBounds null 当这个选项被设置后,地图被限制在给定的地理边界内,当用户平移将地图拖动到视 图以外的范围时会出现弹回的效果,并且也不允许缩小视图到给定范围以外的区域(这取决于地图的尺寸)。使用 setMaxBounds 方法可以动态地设置这种约束。
renderer Renderer * 在地图上绘制矢量图层的默认方法。BM.SVG 或者BM.Canvas默认取决于浏览器支持。

动画选项

Option Type Default Description
zoomAnimation Boolean true 是否启用地图缩放动画。默认情况下,除了Android之外,所有支持CSS3的浏览器都启用了它。
zoomAnimationThreshold Number 4 如果缩放差异超过此值,将不会动画缩放。
fadeAnimation Boolean true 是否启用了平铺淡入淡出动画。默认情况下,除了Android之外,所有支持CSS3的浏览器都启用了它。
markerZoomAnimation Boolean true 标记是否使用缩放动画制作缩放动画,如果禁用,它们将在动画长度上消失。默认情况下,除了Android之外,所有支持CSS3的浏览器都启用了它。
transform3DLimit Number 2^23 定义CSS转换变换的最大大小。默认值不应该改变,除非网页浏览器在做了很大的工作后在错误的位置放置图层panBy

Events

Layer events

Event Data Description
baselayerchange LayersControlEvent Fired when the base layer is changed through the layer control.
overlayadd LayersControlEvent Fired when an overlay is selected through the layer control.
overlayremove LayersControlEvent Fired when an overlay is deselected through the layer control.
layeradd LayerEvent Fired when a new layer is added to the map.
layerremove LayerEvent Fired when some layer is removed from the map

Map state change events

Event Data Description
zoomlevelschange Event Fired when the number of zoomlevels on the map is changed due to adding or removing a layer.
resize ResizeEvent Fired when the map is resized.
unload Event Fired when the map is destroyed with remove method.
viewreset Event 当地图需要重绘其内容时触发(这通常发生在地图缩放或加载)。对于创建自定义叠加层非常有用。
load Event 初始化地图时(第一次设置中心和缩放时)触发。
zoomstart Event 当地图缩放即将改变时触发(例如在缩放动画之前)。
movestart Event 在地图视图开始更改时触发(例如,用户开始拖动地图)。
zoom Event 在缩放级别的任何变化期间反复触发,包括缩放和飞行动画。
move Event 在地图的任何移动过程中反复触发,包括平移和飞行动画。
zoomend Event 在地图缩放结束后触发, 在任何动画效果后.
moveend Event 当地图中心停止变化时触发(例如,用户停止拖动地图)。

Popup events

Event Data Description
popupopen PopupEvent 在地图中打开弹出窗口时触发
popupclose PopupEvent 关闭地图中的弹出窗口时触发
autopanstart Event 打开弹出窗口时地图开始自动平移时触发。

Tooltip events

Event Data Description
tooltipopen TooltipEvent Fired when a tooltip is opened in the map.
tooltipclose TooltipEvent Fired when a tooltip in the map is closed.

Location events

Event Data Description
locationerror ErrorEvent Fired when geolocation (using the locate method) failed.
locationfound LocationEvent Fired when geolocation (using the locate method) went successfully.

Interaction events

Event Data Description
click MouseEvent 用户单击(或点击)地图时触发。
dblclick MouseEvent 当用户双击(或双击)地图时触发。
mousedown MouseEvent 当用户在地图上按下鼠标按钮时触发。
mouseup MouseEvent 当用户在地图上释放鼠标按钮时触发。
mouseover MouseEvent 鼠标进入地图时触发。
mouseout MouseEvent 鼠标离开地图时触发。
mousemove MouseEvent 鼠标在地图上移动时触发。
contextmenu MouseEvent 当用户在地图上按下鼠标右键时触发,防止默认浏览器上下文菜单显示此事件是否有侦听器。当用户持续一次触摸(也称为长按)时,也会在手机上触发。
keypress KeyboardEvent 当用户在聚焦地图时从键盘按下键时触发。
preclick MouseEvent 鼠标在地图上单击之前触发(有时在任何现有点击处理程序开始运行之前需要点击某些内容时有用)。

Other Methods

Event Data Description
zoomanim ZoomAnimEvent Fired on every frame of a zoom animation

Methods

Method Returns Description
getRenderer(<Path> layer) Renderer

返回Renderer应该用于呈现给定的实例Path。 它将确保renderer地图和路径的选项得到遵守,并且渲染器确实存在于地图上。

Methods for Layers and Controls

Method Returns Description
addControl(<Control> control) this

Adds the given control to the map

removeControl(<Control> control) this

Removes the given control from the map

addLayer(<Layer> layer) this

Adds the given layer to the map

removeLayer(<Layer> layer) this

Removes the given layer from the map.

hasLayer(<Layer> layer) Boolean

Returns true if the given layer is currently added to the map

eachLayer(<Function> fn, <Object> context?) this

Iterates over the layers of the map, optionally specifying context of the iterator function.

map.eachLayer(function(layer){
    layer.bindPopup('Hello');
});
openPopup(<Popup> popup) this

关闭先前打开时打开指定的弹出窗口(以确保一次只能打开一个以获得可用性)。

openPopup(<String|HTMLElement> content, <LatLng> latlng, <Popup options> options?) this

创建具有指定内容和选项的弹出窗口,并在地图上的给定点中打开它。

closePopup(<Popup> popup?) this

关闭先前使用openPopup打开的弹出窗口 (或关闭指定的popup)。

openTooltip(<Tooltip> tooltip) this

Opens the specified tooltip.

openTooltip(<String|HTMLElement> content, <LatLng> latlng, <Tooltip options> options?) this

Creates a tooltip with the specified content and options and open it.

closeTooltip(<Tooltip> tooltip?) this

Closes the tooltip given as parameter.

Methods for modifying map state

Method Returns Description
setView(<LatLng> center, <Number> zoom, <Zoom/pan options> options?) this

使用给定的动画选项设置地图视图(地理中心和缩放)

setZoom(<Number> zoom, <Zoom/pan options> options?) this

设置地图的缩放。

zoomIn(<Number> delta?, <Zoom options> options?) this

指定delta(默认为zoomDelta)放大地图的缩放比例。

zoomOut(<Number> delta?, <Zoom options> options?) this

指定delta(默认为zoomDelta)缩小地图的缩放比例。

setZoomAround(<LatLng> latlng, <Number> zoom, <Zoom options> options) this

放大地图,同时保持地图上的指定地理位置静止(例如,用于滚动缩放和双击缩放的内部)。

setZoomAround(<Point> offset, <Number> zoom, <Zoom options> options) this

放大地图,同时保持地图上的指定像素(相对于左上角)静止不动。

fitBounds(<LatLngBounds> bounds, <fitBounds options> options?) this

设置包含可能具有最大缩放级别的给定地理边界的地图视图。

fitWorld(<fitBounds options> options?) this

设置一个地图视图,该视图主要包含可能具有最大缩放级别的整个世界。

panTo(<LatLng> latlng, <Pan options> options?) this

将地图平移到给定的中心。

panBy(<Point> offset, <Pan options> options?) this

按给定数量的像素(动画)平铺地图。

flyTo(<LatLng> latlng, <Number> zoom?, <Zoom/pan options> options?) this

设置执行平滑的缩放动画的地图视图(地理中心和缩放)。

flyToBounds(<LatLngBounds> bounds, <fitBounds options> options?) this

用一个平滑的动画来设置地图的视图flyTo,或使用边界参数fitBounds

setMaxBounds(<Bounds> bounds) this

将地图视图限制为给定边界(请参阅maxBounds选项)。

setMinZoom(<Number> zoom) this

设置可用缩放级别的下限(请参阅minZoom选项)。

setMaxZoom(<Number> zoom) this

设置可用缩放级别的上限(请参阅see the maxZoom选项)。

panInsideBounds(<LatLngBounds> bounds, <Pan options> options?) this

将地图移动到位于给定范围内(如果尚未)的最近视图,使用特定选项(如果有)控制动画。

invalidateSize(<Zoom/Pan options> options) this

检查地图容器大小是否更改,如果是则更新地图 - 在动态更改地图大小后调用它,默认情况下也动画平移。 如果options.panfalse,平移不会发生。如果options.debounceMoveendtrue,它会延迟moveend事件,以致它不会经常发生,即使连续多次调用该方法。

invalidateSize(<Boolean> animate) this

检查地图容器大小是否更改,如果是则更新地图 - 在动态更改地图大小后调用它,默认情况下也动画平移。

stop() this

如果有的话,停止当前运行panToflyTo动画。

Geolocation methods

Method Returns Description
locate(<Locate options> options?) this

Tries to locate the user using the Geolocation API, firing a locationfound event with location data on success or a locationerror event on failure, and optionally sets the map view to the user's location with respect to detection accuracy (or to the world view if geolocation failed). Note that, if your page doesn't use HTTPS, this method will fail in modern browsers (Chrome 50 and newer) See Locate options for more details.

stopLocate() this

Stops watching location previously initiated by map.locate({watch: true}) and aborts resetting the map view if map.locate was called with {setView: true}.

Other Methods

Method Returns Description
addHandler(<String> name, <Function> HandlerClass) this

指定名称及构造函数,向地图添加一个新Handler

remove() this

销毁地图并清除所有相关的事件侦听器。

createPane(<String> name, <HTMLElement> container?) HTMLElement

使用给定名称创建一个新的地图窗格(如果它不存在), 然后返回它。 如果container未设置,窗格将作为主地图窗格的子项创建,或作为子地图创建。

getPane(<String|HTMLElement> pane) HTMLElement

指定名称或HTML元素(其标识)获取 地图窗格

getPanes() Object

返回一个普通对象,其中包含所有窗格的名称作为键,窗格作为值。

getContainer() HTMLElement

返回包含地图的HTML元素。

whenReady(<Function> fn, <Object> context?) this

Runs the given function fn when the map gets initialized with a view (center and zoom) and at least one layer, or immediately if it's already initialized, optionally passing a function context.

Methods for Getting Map State

Method Returns Description
getCenter() LatLng

返回地图视图的地理中心

getZoom() Number

返回地图视图的当前缩放级别

getBounds() LatLngBounds

返回当前地图视图中可见的地理边界

getMinZoom() Number

返回地图的最小缩放级别(如果在minZoom地图选项或任何图层中设置)或0默认设置。

getMaxZoom() Number

返回地图的最大缩放级别(如果在maxZoom地图选项或任何图层中设置)。

getBoundsZoom(<LatLngBounds> bounds, <Boolean> inside?) Number

返回给定范围适合整个地图视图的最大缩放级别。如果inside(可选)设置为true,该方法将返回地图视图适合整个给定边界的最小缩放级别。

getSize() Point

返回地图容器的当前大小(以像素为单位)。

getPixelBounds() Bounds

以投影像素坐标返回当前地图视图的边界(有时在层和覆盖实现中有用)。

getPixelOrigin() Point

返回地图图层左上角的投影像素坐标(在自定义图层和叠加实现中很有用)。

getPixelWorldBounds(<Number> zoom?) Bounds

返回缩放级别的像素坐标中的世界范围zoom。如果zoom省略,则使用地图的当前缩放级别。

Conversion Methods

Method Returns Description
getZoomScale(<Number> toZoom, <Number> fromZoom) Number

返回要应用于从缩放级别fromZoom到的地图过渡的比例因子toZoom。内部用于帮助缩放动画。

getScaleZoom(<Number> scale, <Number> fromZoom) Number

返回地图最终会放大的缩放级别,如果它处于fromZoom级别,并且所有缩放级别都缩放一倍scale。 反之getZoomScale

project(<LatLng> latlng, <Number> zoom) Point

将地理坐标投影到指定缩放级别的像素坐标系中。

unproject(<Point> point, <Number> zoom) LatLng

将像素坐标系投影到指定缩放级别的地理坐标系中。(默认为当前的缩放级别)。

layerPointToLatLng(<Point> point) LatLng

给定相对于像素坐标原点的像素坐标值 , 返回地图上点的地理坐标系。 (为当前的缩放级别).

latLngToLayerPoint(<LatLng> latlng) Point

给定地理坐标,返回相对于像素坐标原点的相应像素坐标。

wrapLatLng(<LatLng> latlng) LatLng

Returns a LatLng where lat and lng has been wrapped according to the map's CRS's wrapLat and wrapLng properties, if they are outside the CRS's bounds. By default this means longitude is wrapped around the dateline so its value is between -180 and +180 degrees.

wrapLatLngBounds(<LatLngBounds> bounds) LatLngBounds

Returns a LatLngBounds with the same size as the given one, ensuring that its center is within the CRS's bounds. By default this means the center longitude is wrapped around the dateline so its value is between -180 and +180 degrees, and the majority of the bounds overlaps the CRS's bounds.

distance(<LatLng> latlng1, <LatLng> latlng2) Number

根据地图的CRS返回两个地理坐标之间的距离。默认情况下,它以米为单位测量距离

containerPointToLayerPoint(<Point> point) Point

给定相对于地图容器的像素坐标,返回相对于 像素坐标原点的对应像素坐标。

layerPointToContainerPoint(<Point> point) Point

给定相对于 像素坐标原点的像素坐标,返回相对于地图容器的对应像素坐标。

containerPointToLatLng(<Point> point) LatLng

给定相对于地图容器的像素坐标,返回相应的地理坐标(对于当前缩放级别)。

latLngToContainerPoint(<LatLng> latlng) Point

给定地理坐标,返回相对于地图容器的对应像素坐标。

mouseEventToContainerPoint(<MouseEvent> ev) Point

给定MouseEvent对象,返回相对于发生事件的地图容器的像素坐标。

mouseEventToLayerPoint(<MouseEvent> ev) Point

给定MouseEvent对象,返回相对于发生事件的 像素坐标原点 的像素坐标。

mouseEventToLatLng(<MouseEvent> ev) LatLng

给定MouseEvent对象,返回事件发生的地理坐标。

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Properties

Handlers

Property Type Description
boxZoom Handler Box (shift-drag with mouse) zoom handler.
doubleClickZoom Handler Double click zoom handler.
dragging Handler Map dragging handler (by both mouse and touch).
keyboard Handler Keyboard navigation handler.
scrollWheelZoom Handler Scroll wheel zoom handler.
tap Handler Mobile touch hacks (quick tap and touch hold) handler.
touchZoom Handler Touch zoom handler.

Map panes

窗格是用于控制地图上图层排序的DOM元素。您可以使用map.getPanemap.getPanes方法访问窗格。 可以使用该map.createPane方法创建新窗格。 每个地图都有以下默认窗格,这些窗格仅在zIndex中有所不同。
Pane Type Z-index Description
mapPane HTMLElement 'auto' 包含所有其他地图窗格的窗格
tilePane HTMLElement 200 适用于GridLayerTileLayer的窗格
overlayPane HTMLElement 400 矢量窗格 (Path, 例如 PolylinePolygon)、 ImageOverlay 以及 VideoOverlay
shadowPane HTMLElement 500 叠加阴影的窗格(例如Marker阴影)
markerPane HTMLElement 600 适用于Marker的图标Icon窗格
tooltipPane HTMLElement 650 Tooltip窗格.
popupPane HTMLElement 700 Popup窗格.

Locate options

Some of the geolocation methods for Map take in an options parameter. This is a plain javascript object with the following optional components:
Option Type Default Description
watch Boolean false If true, starts continous watching of location changes (instead of detecting it once) using W3C watchPosition method. You can later stop watching using map.stopLocate() method.
setView Boolean false If true, automatically sets the map view to the user location with respect to detection accuracy, or to world view if geolocation failed.
maxZoom Number Infinity The maximum zoom for automatic view setting when using setView option.
timeout Number 10000 Number of milliseconds to wait for a response from geolocation before firing a locationerror event.
maximumAge Number 0 Maximum age of detected location. If less than this amount of milliseconds passed since last geolocation response, locate will return a cached location.
enableHighAccuracy Boolean false Enables high accuracy, see description in the W3C spec.

Zoom options

Some of the Map methods which modify the zoom level take in an options parameter. This is a plain javascript object with the following optional components:
Option Type Default Description
animate Boolean If not specified, zoom animation will happen if the zoom origin is inside the current view. If true, the map will attempt animating zoom disregarding where zoom origin is. Setting false will make it always reset the view completely without animation.

Pan options

Some of the Map methods which modify the center of the map take in an options parameter. This is a plain javascript object with the following optional components:
Option Type Default Description
animate Boolean If true, panning will always be animated if possible. If false, it will not animate panning, either resetting the map view if panning more than a screen away, or just setting a new offset for the map pane (except for panBy which always does the latter).
duration Number 0.25 Duration of animated panning, in seconds.
easeLinearity Number 0.25 The curvature factor of panning animation easing (third parameter of the Cubic Bezier curve). 1.0 means linear animation, and the smaller this number, the more bowed the curve.
noMoveStart Boolean false If true, panning won't fire movestart event on start (used internally for panning inertia).

Zoom/pan options

Option Type Default Description
animate Boolean If not specified, zoom animation will happen if the zoom origin is inside the current view. If true, the map will attempt animating zoom disregarding where zoom origin is. Setting false will make it always reset the view completely without animation.
Option Type Default Description
duration Number 0.25 Duration of animated panning, in seconds.
easeLinearity Number 0.25 The curvature factor of panning animation easing (third parameter of the Cubic Bezier curve). 1.0 means linear animation, and the smaller this number, the more bowed the curve.
noMoveStart Boolean false If true, panning won't fire movestart event on start (used internally for panning inertia).

FitBounds options

Option Type Default Description
paddingTopLeft Point [0, 0] Sets the amount of padding in the top left corner of a map container that shouldn't be accounted for when setting the view to fit bounds. Useful if you have some control overlays on the map like a sidebar and you don't want them to obscure objects you're zooming to.
paddingBottomRight Point [0, 0] The same for the bottom right corner of the map.
padding Point [0, 0] Equivalent of setting both top left and bottom right padding to the same value.
maxZoom Number null The maximum possible zoom to use.
Option Type Default Description
animate Boolean If not specified, zoom animation will happen if the zoom origin is inside the current view. If true, the map will attempt animating zoom disregarding where zoom origin is. Setting false will make it always reset the view completely without animation.
Option Type Default Description
duration Number 0.25 Duration of animated panning, in seconds.
easeLinearity Number 0.25 The curvature factor of panning animation easing (third parameter of the Cubic Bezier curve). 1.0 means linear animation, and the smaller this number, the more bowed the curve.
noMoveStart Boolean false If true, panning won't fire movestart event on start (used internally for panning inertia).

Marker

BM.Marker is used to display clickable/draggable icons on the map. Extends Layer.

Usage example

BM.marker([50.5, 30.5]).addTo(map);

Creation

Factory Description
BM.marker(<LatLng> latlng, <Marker options> options?) Instantiates a Marker object given a geographical point and optionally an options object.

Options

Option Type Default Description
icon Icon * Icon instance to use for rendering the marker. See Icon documentation for details on how to customize the marker icon. If not specified, a common instance of BM.Icon.Default is used.
draggable Boolean false Whether the marker is draggable with mouse/touch or not.
autoPan Boolean false Set it to true if you want the map to do panning animation when marker hits the edges.
autoPanPadding Point Point(50, 50) Equivalent of setting both top left and bottom right autopan padding to the same value.
autoPanSpeed Number 10 Number of pixels the map should move by.
keyboard Boolean true Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.
title String '' Text for the browser tooltip that appear on marker hover (no tooltip by default).
alt String '' Text for the alt attribute of the icon image (useful for accessibility).
zIndexOffset Number 0 By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like 1000 (or high negative value, respectively).
opacity Number 1.0 The opacity of the marker.
riseOnHover Boolean false If true, the marker will get on top of others when you hover the mouse over it.
riseOffset Number 250 The z-index offset used for the riseOnHover feature.
pane String 'markerPane' Map pane where the markers icon will be added.
bubblingMouseEvents Boolean false When true, a mouse event on this marker will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

In addition to shared layer methods like addTo() and remove() and popup methods like bindPopup() you can also use the following methods:
Event Data Description
move Event Fired when the marker is moved via setLatLng or by dragging. Old and new coordinates are included in event arguments as oldLatLng, latlng.

Dragging events

Event Data Description
dragstart Event Fired when the user starts dragging the marker.
movestart Event Fired when the marker starts moving (because of dragging).
drag Event Fired repeatedly while the user drags the marker.
dragend DragEndEvent Fired when the user stops dragging the marker.
moveend Event Fired when the marker stops moving (because of dragging).
Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the marker (as a GeoJSON Point Feature).

getLatLng() LatLng

Returns the current geographical position of the marker.

setLatLng(<LatLng> latlng) this

Changes the marker position to the given point.

setZIndexOffset(<Number> offset) this

Changes the zIndex offset of the marker.

setIcon(<Icon> icon) this

Changes the marker icon.

setOpacity(<Number> opacity) this

Changes the opacity of the marker.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Properties

Interaction handlers

Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see Handler methods). Example:
marker.dragging.disable();
Property Type Description
dragging Handler Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set marker.options.draggable).

用于在地图的某些位置打开弹出窗口。使用Map.openPopup 打开弹出窗口, 同时确保一次只打开一个弹出窗口(建议用于可用性),或使用Map.addLayer打开任意数量的弹出窗口。

如果你想将弹出窗口绑定到标记点击然后打开它,那很简单:

marker.bindPopup(popupContent).openPopup();

折线之类的路径叠加也有一个bindPopup方法。这是在地图上打开弹出窗口的更复杂方法:

var popup = BM.popup()
    .setLatLng(latlng)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);
Factory Description
Option Type Default Description
Option Type Default Description
Option Type Default Description

Events

Event Data Description
Event Data Description
Event Data Description
Method Returns Description
Method Returns Description
Method Returns Description
Method Returns Description
Method Returns Description

Tooltip

Used to display small texts on top of map layers.

Usage example

marker.bindTooltip("my tooltip text").openTooltip();

Note about tooltip offset. Bigemap takes two options in consideration for computing tooltip offsetting:

  • the offset Tooltip option: it defaults to [0, 0], and it's specific to one tooltip. Add a positive x offset to move the tooltip to the right, and a positive y offset to move it to the bottom. Negatives will move to the left and top.
  • the tooltipAnchor Icon option: this will only be considered for Marker. You should adapt this value if you use a custom icon.

Creation

Factory Description
BM.tooltip(<Tooltip options> options?, <Layer> source?) Instantiates a Tooltip object given an optional options object that describes its appearance and location and an optional source object that is used to tag the tooltip with a reference to the Layer to which it refers.

Options

Option Type Default Description
pane String 'tooltipPane' Map pane where the tooltip will be added.
offset Point Point(0, 0) Optional offset of the tooltip position.
direction String 'auto' Direction where to open the tooltip. Possible values are: right, left, top, bottom, center, auto. auto will dynamically switch between right and left according to the tooltip position on the map.
permanent Boolean false Whether to open the tooltip permanently or only on mouseover.
sticky Boolean false If true, the tooltip will follow the mouse instead of being fixed at the feature center.
interactive Boolean false If true, the tooltip will listen to the feature events.
opacity Number 0.9 Tooltip container opacity.
Option Type Default Description
className String '' A custom CSS class name to assign to the popup.
Option Type Default Description
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

TileLayer

Used to load and display tile layers on the map. Extends GridLayer.

Usage example

BM.tileLayer('bigemap.dc-map').addTo(map);

URL template

A string of the following form:

'http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'

{s} means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; a, b or c by default, can be omitted), {z} — zoom level, {x} and {y} — tile coordinates. {r} can be used to add "@2x" to the URL to load retina tiles. You can use custom keys in the template, which will be evaluated from TileLayer options, like this:

BM.tileLayer('http://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});

Creation

Extension methods

Factory Description
BM.tilelayer(<String> urlTemplate, <TileLayer options> options?) Instantiates a tile layer object given a URL template and optionally an options object.

Options

Option Type Default Description
minZoom Number 0 The minimum zoom level down to which this layer will be displayed (inclusive).
maxZoom Number 18 The maximum zoom level up to which this layer will be displayed (inclusive).
subdomains String|String[] 'abc' Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.
errorTileUrl String '' URL to the tile image to show in place of the tile that failed to load.
zoomOffset Number 0 The zoom number used in tile URLs will be offset with this value.
tms Boolean false If true, inverses Y axis numbering for tiles (turn this on for TMS services).
zoomReverse Boolean false If set to true, the zoom number used in tile URLs will be reversed (maxZoom - zoom instead of zoom)
detectRetina Boolean false If true and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.
crossOrigin Boolean false If true, all tiles will have their crossOrigin attribute set to ''. This is needed if you want to access tile pixel data.
combineMode String 'combine' 地图源组合模式,用于多地图id组合加载,支持combine`overlay`两种模式。
Option Type Default Description
tileSize Number|Point 256 Width and height of tiles in the grid. Use a number if width and height are equal, or BM.point(width, height) otherwise.
opacity Number 1.0 Opacity of the tiles. Can be used in the createTile() function.
updateWhenIdle Boolean (depends) Load new tiles only when panning ends. true by default on mobile browsers, in order to avoid too many requests and keep smooth navigation. false otherwise in order to display new tiles during panning, since it is easy to pan outside the keepBuffer option in desktop browsers.
updateWhenZooming Boolean true By default, a smooth zoom animation (during a touch zoom or a flyTo()) will update grid layers every integer zoom level. Setting this option to false will update the grid layer only when the smooth animation ends.
updateInterval Number 200 Tiles will not update more than once every updateInterval milliseconds when panning.
zIndex Number 1 The explicit zIndex of the tile layer.
bounds LatLngBounds undefined If set, tiles will only be loaded inside the set LatLngBounds.
maxNativeZoom Number undefined Maximum zoom number the tile source has available. If it is specified, the tiles on all zoom levels higher than maxNativeZoom will be loaded from maxNativeZoom level and auto-scaled.
minNativeZoom Number undefined Minimum zoom number the tile source has available. If it is specified, the tiles on all zoom levels lower than minNativeZoom will be loaded from minNativeZoom level and auto-scaled.
noWrap Boolean false Whether the layer is wrapped around the antimeridian. If true, the GridLayer will only be displayed once at low zoom levels. Has no effect when the map CRS doesn't wrap around. Can be used in combination with bounds to prevent requesting tiles outside the CRS limits.
pane String 'tilePane' Map pane where the grid layer will be added.
className String '' A custom class name to assign to the tile layer. Empty by default.
keepBuffer Number 2 When panning the map, keep this many rows and columns of tiles before unloading them.
Option Type Default Description
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
loading Event Fired when the grid layer starts loading tiles.
tileunload TileEvent Fired when a tile is removed (e.g. when a tile goes off the screen).
tileloadstart TileEvent Fired when a tile is requested and starts loading.
tileerror TileErrorEvent Fired when there is an error loading a tile.
tileload TileEvent Fired when a tile loads.
load Event Fired when the grid layer loaded all visible tiles.
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
createTile(<Object> coords, <Function> done?) HTMLElement

Called only internally, overrides GridLayer's createTile() to return an <img> HTML element with the appropriate image URL given coords. The done callback is called when the tile has been loaded.

Extension methods

Layers extending TileLayer might reimplement the following method.
Method Returns Description
getTileUrl(<Object> coords) String

Called only internally, returns the URL for a tile given its coordinates. Classes extending TileLayer can override this function to provide custom tile URL naming schemes.

Method Returns Description
bringToFront() this

Brings the tile layer to the top of all tile layers.

bringToBack() this

Brings the tile layer to the bottom of all tile layers.

bringToFrontAt() this

Brings the tile layer to the top of another tile layers.

bringToBackAt() this

Brings the tile layer to the bottom of another tile layers.

getContainer() HTMLElement

Returns the HTML element that contains the tiles for this layer.

setOpacity(<Number> opacity) this

Changes the opacity of the grid layer.

setZIndex(<Number> zIndex) this

Changes the zIndex of the grid layer.

isLoading() Boolean

Returns true if any tile in the grid layer has not finished loading.

redraw() this

Causes the layer to clear all the tiles and request them again.

getTileSize() Point

Normalizes the tileSize option into a point. Used by the createTile() method.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

TileLayer.WMS

Used to display WMS services as tile layers on the map. Extends TileLayer.

Usage example

var nexrad = BM.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", {
    layers: 'nexrad-n0r-900913',
    format: 'image/png',
    transparent: true,
    attribution: "Weather data © 2012 IEM Nexrad"
});

Creation

Factory Description
BM.tileLayer.wms(<String> baseUrl, <TileLayer.WMS options> options) Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.

Options

If any custom options not documented here are used, they will be sent to the WMS server as extra parameters in each request URL. This can be useful for non-standard vendor WMS parameters.
Option Type Default Description
layers String '' (required) Comma-separated list of WMS layers to show.
styles String '' Comma-separated list of WMS styles.
format String 'image/jpeg' WMS image format (use 'image/png' for layers with transparency).
transparent Boolean false If true, the WMS service will return images with transparency.
version String '1.1.1' Version of the WMS service to use
crs CRS null Coordinate Reference System to use for the WMS requests, defaults to map CRS. Don't change this if you're not sure what it means.
uppercase Boolean false If true, WMS request parameter keys will be uppercase.
Option Type Default Description
minZoom Number 0 The minimum zoom level down to which this layer will be displayed (inclusive).
maxZoom Number 18 The maximum zoom level up to which this layer will be displayed (inclusive).
subdomains String|String[] 'abc' Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.
errorTileUrl String '' URL to the tile image to show in place of the tile that failed to load.
zoomOffset Number 0 The zoom number used in tile URLs will be offset with this value.
tms Boolean false If true, inverses Y axis numbering for tiles (turn this on for TMS services).
zoomReverse Boolean false If set to true, the zoom number used in tile URLs will be reversed (maxZoom - zoom instead of zoom)
detectRetina Boolean false If true and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.
crossOrigin Boolean false If true, all tiles will have their crossOrigin attribute set to ''. This is needed if you want to access tile pixel data.
combineMode String 'combine' 地图源组合模式,用于多地图id组合加载,支持combine`overlay`两种模式。
Option Type Default Description
tileSize Number|Point 256 Width and height of tiles in the grid. Use a number if width and height are equal, or BM.point(width, height) otherwise.
opacity Number 1.0 Opacity of the tiles. Can be used in the createTile() function.
updateWhenIdle Boolean (depends) Load new tiles only when panning ends. true by default on mobile browsers, in order to avoid too many requests and keep smooth navigation. false otherwise in order to display new tiles during panning, since it is easy to pan outside the keepBuffer option in desktop browsers.
updateWhenZooming Boolean true By default, a smooth zoom animation (during a touch zoom or a flyTo()) will update grid layers every integer zoom level. Setting this option to false will update the grid layer only when the smooth animation ends.
updateInterval Number 200 Tiles will not update more than once every updateInterval milliseconds when panning.
zIndex Number 1 The explicit zIndex of the tile layer.
bounds LatLngBounds undefined If set, tiles will only be loaded inside the set LatLngBounds.
maxNativeZoom Number undefined Maximum zoom number the tile source has available. If it is specified, the tiles on all zoom levels higher than maxNativeZoom will be loaded from maxNativeZoom level and auto-scaled.
minNativeZoom Number undefined Minimum zoom number the tile source has available. If it is specified, the tiles on all zoom levels lower than minNativeZoom will be loaded from minNativeZoom level and auto-scaled.
noWrap Boolean false Whether the layer is wrapped around the antimeridian. If true, the GridLayer will only be displayed once at low zoom levels. Has no effect when the map CRS doesn't wrap around. Can be used in combination with bounds to prevent requesting tiles outside the CRS limits.
pane String 'tilePane' Map pane where the grid layer will be added.
className String '' A custom class name to assign to the tile layer. Empty by default.
keepBuffer Number 2 When panning the map, keep this many rows and columns of tiles before unloading them.
Option Type Default Description
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
loading Event Fired when the grid layer starts loading tiles.
tileunload TileEvent Fired when a tile is removed (e.g. when a tile goes off the screen).
tileloadstart TileEvent Fired when a tile is requested and starts loading.
tileerror TileErrorEvent Fired when there is an error loading a tile.
tileload TileEvent Fired when a tile loads.
load Event Fired when the grid layer loaded all visible tiles.
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
setParams(<Object> params, <Boolean> noRedraw?) this

Merges an object with the new parameters and re-requests tiles on the current screen (unless noRedraw was set to true).

Method Returns Description
createTile(<Object> coords, <Function> done?) HTMLElement

Called only internally, overrides GridLayer's createTile() to return an <img> HTML element with the appropriate image URL given coords. The done callback is called when the tile has been loaded.

Method Returns Description
bringToFront() this

Brings the tile layer to the top of all tile layers.

bringToBack() this

Brings the tile layer to the bottom of all tile layers.

bringToFrontAt() this

Brings the tile layer to the top of another tile layers.

bringToBackAt() this

Brings the tile layer to the bottom of another tile layers.

getContainer() HTMLElement

Returns the HTML element that contains the tiles for this layer.

setOpacity(<Number> opacity) this

Changes the opacity of the grid layer.

setZIndex(<Number> zIndex) this

Changes the zIndex of the grid layer.

isLoading() Boolean

Returns true if any tile in the grid layer has not finished loading.

redraw() this

Causes the layer to clear all the tiles and request them again.

getTileSize() Point

Normalizes the tileSize option into a point. Used by the createTile() method.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

ImageOverlay

Used to load and display a single image over specific bounds of the map. Extends Layer.

Usage example

var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',
    imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];
BM.imageOverlay(imageUrl, imageBounds).addTo(map);

Creation

Factory Description
BM.imageOverlay(<String> imageUrl, <LatLngBounds> bounds, <ImageOverlay options> options?) Instantiates an image overlay object given the URL of the image and the geographical bounds it is tied to.

Options

Option Type Default Description
opacity Number 1.0 The opacity of the image overlay.
alt String '' Text for the alt attribute of the image (useful for accessibility).
interactive Boolean false If true, the image overlay will emit mouse events when clicked or hovered.
crossOrigin Boolean false If true, the image will have its crossOrigin attribute set to ''. This is needed if you want to access image pixel data.
errorOverlayUrl String '' URL to the overlay image to show in place of the overlay that failed to load.
zIndex Number 1 The explicit zIndex of the tile layer.
className String '' A custom class name to assign to the image. Empty by default.
Option Type Default Description
bubblingMouseEvents Boolean true When true, a mouse event on this layer will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
load Event Fired when the ImageOverlay layer has loaded its image
error Event Fired when the ImageOverlay layer has loaded its image
Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
setOpacity(<Number> opacity) this

Sets the opacity of the overlay.

bringToFront() this

Brings the layer to the top of all overlays.

bringToBack() this

Brings the layer to the bottom of all overlays.

bringToFrontAt(<ImageOverlay> another) this

Brings the layer to the top of another overlay.

bringToBackAt(<ImageOverlay> another) this

Brings the layer to the bottom of another overlay.

setUrl(<String> url) this

Changes the URL of the image.

setBounds(<LatLngBounds> bounds) this

Update the bounds that this ImageOverlay covers Changes the zIndex of the image overlay.

getBounds() LatLngBounds

Get the bounds that this ImageOverlay covers

getElement() HTMLElement

Returns the instance of HTMLImageElement used by this overlay.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

VideoOverlay

Used to load and display a video player over specific bounds of the map. Extends ImageOverlay. A video overlay uses the <video> HTML5 element.

Usage example

var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',
    videoBounds = [[ 32, -130], [ 13, -100]];
BM.VideoOverlay(videoUrl, videoBounds ).addTo(map);

Creation

Factory Description
BM.videoOverlay(<String|Array|HTMLVideoElement> video, <LatLngBounds> bounds, <VideoOverlay options> options?) Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the geographical bounds it is tied to.

Options

Option Type Default Description
autoplay Boolean true Whether the video starts playing automatically when loaded.
loop Boolean true Whether the video will loop back to the beginning when played.
Option Type Default Description
opacity Number 1.0 The opacity of the image overlay.
alt String '' Text for the alt attribute of the image (useful for accessibility).
interactive Boolean false If true, the image overlay will emit mouse events when clicked or hovered.
crossOrigin Boolean false If true, the image will have its crossOrigin attribute set to ''. This is needed if you want to access image pixel data.
errorOverlayUrl String '' URL to the overlay image to show in place of the overlay that failed to load.
zIndex Number 1 The explicit zIndex of the tile layer.
className String '' A custom class name to assign to the image. Empty by default.
Option Type Default Description
bubblingMouseEvents Boolean true When true, a mouse event on this layer will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
load Event Fired when the video has finished loading the first frame
Event Data Description
error Event Fired when the ImageOverlay layer has loaded its image
Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
getElement() HTMLVideoElement

Returns the instance of HTMLVideoElement used by this overlay.

Method Returns Description
setOpacity(<Number> opacity) this

Sets the opacity of the overlay.

bringToFront() this

Brings the layer to the top of all overlays.

bringToBack() this

Brings the layer to the bottom of all overlays.

bringToFrontAt(<ImageOverlay> another) this

Brings the layer to the top of another overlay.

bringToBackAt(<ImageOverlay> another) this

Brings the layer to the bottom of another overlay.

setUrl(<String> url) this

Changes the URL of the image.

setBounds(<LatLngBounds> bounds) this

Update the bounds that this ImageOverlay covers Changes the zIndex of the image overlay.

getBounds() LatLngBounds

Get the bounds that this ImageOverlay covers

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Path

An abstract class that contains options and constants shared between vector overlays (Polygon, Polyline, Circle). Do not use it directly. Extends Layer.

Creation

Factory Description
BM.svg(<Renderer options> options?) Creates a SVG renderer with the given options.

Options

Option Type Default Description
stroke Boolean true Whether to draw stroke along the path. Set it to false to disable borders on polygons or circles.
color String '#3388ff' Stroke color
weight Number 3 Stroke width in pixels
opacity Number 1.0 Stroke opacity
lineCap String 'round' A string that defines shape to be used at the end of the stroke.
lineJoin String 'round' A string that defines shape to be used at the corners of the stroke.
dashArray String null A string that defines the stroke dash pattern. Doesn't work on Canvas-powered layers in some old browsers.
dashOffset String null A string that defines the distance into the dash pattern to start the dash. Doesn't work on Canvas-powered layers in some old browsers.
fill Boolean depends Whether to fill the path with color. Set it to false to disable filling on polygons or circles.
fillColor String * Fill color. Defaults to the value of the color option
fillOpacity Number 0.2 Fill opacity.
fillRule String 'evenodd' A string that defines how the inside of a shape is determined.
bubblingMouseEvents Boolean true When true, a mouse event on this path will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
renderer Renderer 指定PathRenderer对象. 优先于地图的默认渲染器.
className String null Custom class name set on an element. Only for SVG renderer.
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
redraw() this

Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.

setStyle(<Path options> style) this

Changes the appearance of a Path based on the options in the Path options object.

bringToFront() this

Brings the layer to the top of all path layers.

bringToBack() this

Brings the layer to the bottom of all path layers.

bringToFrontAt() this

Brings the layer to the top of another layer.

bringToBackAt() this

Brings the layer to the bottom of another layer.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Polyline

A class for drawing polyline overlays on a map. Extends Path.

Usage example

// create a red polyline from an array of LatLng points
var latlngs = [
    [45.51, -122.68],
    [37.77, -122.43],
    [34.04, -118.2]
];
var polyline = BM.polyline(latlngs, {color: 'red'}).addTo(map);
// zoom the map to the polyline
map.fitBounds(polyline.getBounds());

You can also pass a multi-dimensional array to represent a MultiPolyline shape:

// create a red polyline from an array of arrays of LatLng points
var latlngs = [
    [[45.51, -122.68],
     [37.77, -122.43],
     [34.04, -118.2]],
    [[40.78, -73.91],
     [41.83, -87.62],
     [32.76, -96.72]]
];

Creation

Factory Description
BM.polyline(<LatLng[]> latlngs, <Polyline options> options?) Instantiates a polyline object given an array of geographical points and optionally an options object. You can create a Polyline object with multiple separate lines (MultiPolyline) by passing an array of arrays of geographic points.

Options

Option Type Default Description
smoothFactor Number 1.0 How much to simplify the polyline on each zoom level. More means better performance and smoother look, and less means more accurate representation.
noClip Boolean false Disable polyline clipping.
Option Type Default Description
stroke Boolean true Whether to draw stroke along the path. Set it to false to disable borders on polygons or circles.
color String '#3388ff' Stroke color
weight Number 3 Stroke width in pixels
opacity Number 1.0 Stroke opacity
lineCap String 'round' A string that defines shape to be used at the end of the stroke.
lineJoin String 'round' A string that defines shape to be used at the corners of the stroke.
dashArray String null A string that defines the stroke dash pattern. Doesn't work on Canvas-powered layers in some old browsers.
dashOffset String null A string that defines the distance into the dash pattern to start the dash. Doesn't work on Canvas-powered layers in some old browsers.
fill Boolean depends Whether to fill the path with color. Set it to false to disable filling on polygons or circles.
fillColor String * Fill color. Defaults to the value of the color option
fillOpacity Number 0.2 Fill opacity.
fillRule String 'evenodd' A string that defines how the inside of a shape is determined.
bubblingMouseEvents Boolean true When true, a mouse event on this path will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
renderer Renderer 指定PathRenderer对象. 优先于地图的默认渲染器.
className String null Custom class name set on an element. Only for SVG renderer.
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the polyline (as a GeoJSON LineString or MultiLineString Feature).

getLatLngs() LatLng[]

Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.

setLatLngs(<LatLng[]> latlngs) this

Replaces all the points in the polyline with the given array of geographical points.

isEmpty() Boolean

Returns true if the Polyline has no LatLngs.

closestLayerPoint() Point

Returns the point closest to p on the Polyline.

getCenter() LatLng

Returns the center (centroid) of the polyline.

getBounds() LatLngBounds

Returns the LatLngBounds of the path.

addLatLng(<LatLng> latlng) this

Adds a given point to the polyline. By default, adds to the first ring of the polyline in case of a multi-polyline, but can be overridden by passing a specific ring as a LatLng array (that you can earlier access with getLatLngs).

Method Returns Description
redraw() this

Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.

setStyle(<Path options> style) this

Changes the appearance of a Path based on the options in the Path options object.

bringToFront() this

Brings the layer to the top of all path layers.

bringToBack() this

Brings the layer to the bottom of all path layers.

bringToFrontAt() this

Brings the layer to the top of another layer.

bringToBackAt() this

Brings the layer to the bottom of another layer.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Polygon

A class for drawing polygon overlays on a map. Extends Polyline. Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.

Usage example

// create a red polygon from an array of LatLng points
var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];
var polygon = BM.polygon(latlngs, {color: 'red'}).addTo(map);
// zoom the map to the polygon
map.fitBounds(polygon.getBounds());

You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:

var latlngs = [
  [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring
  [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole
];

Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.

var latlngs = [
  [ // first polygon
    [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring
    [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole
  ],
  [ // second polygon
    [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]
  ]
];

Creation

Factory Description
BM.polygon(<LatLng[]> latlngs, <Polyline options> options?)

Options

Option Type Default Description
smoothFactor Number 1.0 How much to simplify the polyline on each zoom level. More means better performance and smoother look, and less means more accurate representation.
noClip Boolean false Disable polyline clipping.
Option Type Default Description
stroke Boolean true Whether to draw stroke along the path. Set it to false to disable borders on polygons or circles.
color String '#3388ff' Stroke color
weight Number 3 Stroke width in pixels
opacity Number 1.0 Stroke opacity
lineCap String 'round' A string that defines shape to be used at the end of the stroke.
lineJoin String 'round' A string that defines shape to be used at the corners of the stroke.
dashArray String null A string that defines the stroke dash pattern. Doesn't work on Canvas-powered layers in some old browsers.
dashOffset String null A string that defines the distance into the dash pattern to start the dash. Doesn't work on Canvas-powered layers in some old browsers.
fill Boolean depends Whether to fill the path with color. Set it to false to disable filling on polygons or circles.
fillColor String * Fill color. Defaults to the value of the color option
fillOpacity Number 0.2 Fill opacity.
fillRule String 'evenodd' A string that defines how the inside of a shape is determined.
bubblingMouseEvents Boolean true When true, a mouse event on this path will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
renderer Renderer 指定PathRenderer对象. 优先于地图的默认渲染器.
className String null Custom class name set on an element. Only for SVG renderer.
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the polygon (as a GeoJSON Polygon or MultiPolygon Feature).

Method Returns Description
getLatLngs() LatLng[]

Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.

setLatLngs(<LatLng[]> latlngs) this

Replaces all the points in the polyline with the given array of geographical points.

isEmpty() Boolean

Returns true if the Polyline has no LatLngs.

closestLayerPoint() Point

Returns the point closest to p on the Polyline.

getCenter() LatLng

Returns the center (centroid) of the polyline.

getBounds() LatLngBounds

Returns the LatLngBounds of the path.

addLatLng(<LatLng> latlng) this

Adds a given point to the polyline. By default, adds to the first ring of the polyline in case of a multi-polyline, but can be overridden by passing a specific ring as a LatLng array (that you can earlier access with getLatLngs).

Method Returns Description
redraw() this

Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.

setStyle(<Path options> style) this

Changes the appearance of a Path based on the options in the Path options object.

bringToFront() this

Brings the layer to the top of all path layers.

bringToBack() this

Brings the layer to the bottom of all path layers.

bringToFrontAt() this

Brings the layer to the top of another layer.

bringToBackAt() this

Brings the layer to the bottom of another layer.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Rectangle

A class for drawing rectangle overlays on a map. Extends Polygon.

Usage example

// define rectangle geographical bounds
var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];
// create an orange rectangle
BM.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map);
// zoom the map to the rectangle bounds
map.fitBounds(bounds);

Creation

Factory Description
BM.rectangle(<LatLngBounds> latLngBounds, <Polyline options> options?)

Options

Option Type Default Description
smoothFactor Number 1.0 How much to simplify the polyline on each zoom level. More means better performance and smoother look, and less means more accurate representation.
noClip Boolean false Disable polyline clipping.
Option Type Default Description
stroke Boolean true Whether to draw stroke along the path. Set it to false to disable borders on polygons or circles.
color String '#3388ff' Stroke color
weight Number 3 Stroke width in pixels
opacity Number 1.0 Stroke opacity
lineCap String 'round' A string that defines shape to be used at the end of the stroke.
lineJoin String 'round' A string that defines shape to be used at the corners of the stroke.
dashArray String null A string that defines the stroke dash pattern. Doesn't work on Canvas-powered layers in some old browsers.
dashOffset String null A string that defines the distance into the dash pattern to start the dash. Doesn't work on Canvas-powered layers in some old browsers.
fill Boolean depends Whether to fill the path with color. Set it to false to disable filling on polygons or circles.
fillColor String * Fill color. Defaults to the value of the color option
fillOpacity Number 0.2 Fill opacity.
fillRule String 'evenodd' A string that defines how the inside of a shape is determined.
bubblingMouseEvents Boolean true When true, a mouse event on this path will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
renderer Renderer 指定PathRenderer对象. 优先于地图的默认渲染器.
className String null Custom class name set on an element. Only for SVG renderer.
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
setBounds(<LatLngBounds> latLngBounds) this

Redraws the rectangle with the passed bounds.

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the polygon (as a GeoJSON Polygon or MultiPolygon Feature).

Method Returns Description
getLatLngs() LatLng[]

Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.

setLatLngs(<LatLng[]> latlngs) this

Replaces all the points in the polyline with the given array of geographical points.

isEmpty() Boolean

Returns true if the Polyline has no LatLngs.

closestLayerPoint() Point

Returns the point closest to p on the Polyline.

getCenter() LatLng

Returns the center (centroid) of the polyline.

getBounds() LatLngBounds

Returns the LatLngBounds of the path.

addLatLng(<LatLng> latlng) this

Adds a given point to the polyline. By default, adds to the first ring of the polyline in case of a multi-polyline, but can be overridden by passing a specific ring as a LatLng array (that you can earlier access with getLatLngs).

Method Returns Description
redraw() this

Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.

setStyle(<Path options> style) this

Changes the appearance of a Path based on the options in the Path options object.

bringToFront() this

Brings the layer to the top of all path layers.

bringToBack() this

Brings the layer to the bottom of all path layers.

bringToFrontAt() this

Brings the layer to the top of another layer.

bringToBackAt() this

Brings the layer to the bottom of another layer.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Circle

A class for drawing circle overlays on a map. Extends CircleMarker. It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).

Usage example

BM.circle([50.5, 30.5], {radius: 200}).addTo(map);

Creation

Factory Description
BM.circle(<LatLng> latlng, <Circle options> options?) Instantiates a circle object given a geographical point, and an options object which contains the circle radius.
BM.circle(<LatLng> latlng, <Number> radius, <Circle options> options?) Obsolete way of instantiating a circle, for compatibility with 0.7.x code. Do not use in new applications or plugins.

Options

Option Type Default Description
radius Number Radius of the circle, in meters.
Option Type Default Description
stroke Boolean true Whether to draw stroke along the path. Set it to false to disable borders on polygons or circles.
color String '#3388ff' Stroke color
weight Number 3 Stroke width in pixels
opacity Number 1.0 Stroke opacity
lineCap String 'round' A string that defines shape to be used at the end of the stroke.
lineJoin String 'round' A string that defines shape to be used at the corners of the stroke.
dashArray String null A string that defines the stroke dash pattern. Doesn't work on Canvas-powered layers in some old browsers.
dashOffset String null A string that defines the distance into the dash pattern to start the dash. Doesn't work on Canvas-powered layers in some old browsers.
fill Boolean depends Whether to fill the path with color. Set it to false to disable filling on polygons or circles.
fillColor String * Fill color. Defaults to the value of the color option
fillOpacity Number 0.2 Fill opacity.
fillRule String 'evenodd' A string that defines how the inside of a shape is determined.
bubblingMouseEvents Boolean true When true, a mouse event on this path will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
renderer Renderer 指定PathRenderer对象. 优先于地图的默认渲染器.
className String null Custom class name set on an element. Only for SVG renderer.
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
setRadius(<Number> radius) this

Sets the radius of a circle. Units are in meters.

getRadius() Number

Returns the current radius of a circle. Units are in meters.

getBounds() LatLngBounds

Returns the LatLngBounds of the path.

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the circle marker (as a GeoJSON Point Feature).

setLatLng(<LatLng> latLng) this

Sets the position of a circle marker to a new location.

getLatLng() LatLng

Returns the current geographical position of the circle marker

Method Returns Description
redraw() this

Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.

setStyle(<Path options> style) this

Changes the appearance of a Path based on the options in the Path options object.

bringToFront() this

Brings the layer to the top of all path layers.

bringToBack() this

Brings the layer to the bottom of all path layers.

bringToFrontAt() this

Brings the layer to the top of another layer.

bringToBackAt() this

Brings the layer to the bottom of another layer.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

CircleMarker

A circle of a fixed size with radius specified in pixels. Extends Path.

Creation

Factory Description
BM.circleMarker(<LatLng> latlng, <CircleMarker options> options?) Instantiates a circle marker object given a geographical point, and an optional options object.

Options

Option Type Default Description
radius Number 10 Radius of the circle marker, in pixels
Option Type Default Description
stroke Boolean true Whether to draw stroke along the path. Set it to false to disable borders on polygons or circles.
color String '#3388ff' Stroke color
weight Number 3 Stroke width in pixels
opacity Number 1.0 Stroke opacity
lineCap String 'round' A string that defines shape to be used at the end of the stroke.
lineJoin String 'round' A string that defines shape to be used at the corners of the stroke.
dashArray String null A string that defines the stroke dash pattern. Doesn't work on Canvas-powered layers in some old browsers.
dashOffset String null A string that defines the distance into the dash pattern to start the dash. Doesn't work on Canvas-powered layers in some old browsers.
fill Boolean depends Whether to fill the path with color. Set it to false to disable filling on polygons or circles.
fillColor String * Fill color. Defaults to the value of the color option
fillOpacity Number 0.2 Fill opacity.
fillRule String 'evenodd' A string that defines how the inside of a shape is determined.
bubblingMouseEvents Boolean true When true, a mouse event on this path will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
renderer Renderer 指定PathRenderer对象. 优先于地图的默认渲染器.
className String null Custom class name set on an element. Only for SVG renderer.
Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the circle marker (as a GeoJSON Point Feature).

setLatLng(<LatLng> latLng) this

Sets the position of a circle marker to a new location.

getLatLng() LatLng

Returns the current geographical position of the circle marker

setRadius(<Number> radius) this

Sets the radius of a circle marker. Units are in pixels.

getRadius() Number

Returns the current radius of the circle

Method Returns Description
redraw() this

Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.

setStyle(<Path options> style) this

Changes the appearance of a Path based on the options in the Path options object.

bringToFront() this

Brings the layer to the top of all path layers.

bringToBack() this

Brings the layer to the bottom of all path layers.

bringToFrontAt() this

Brings the layer to the top of another layer.

bringToBackAt() this

Brings the layer to the bottom of another layer.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

SVG

Allows vector layers to be displayed with SVG. Inherits Renderer. Due to technical limitations, SVG is not available in all web browsers, notably Android 2.x and 3.x. Although SVG is not available on IE7 and IE8, these browsers support VML (a now deprecated technology), and the SVG renderer will fall back to VML in this case. Although SVG is not available on IE7 and IE8, these browsers support VML, and the SVG renderer will fall back to VML in this case. VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility with old versions of Internet Explorer.

Usage example

Use SVG by default for all paths in the map:

var map = BM.map('map', {
    renderer: BM.svg()
});

Use a SVG renderer with extra padding for specific vector geometries:

var map = BM.map('map');
var myRenderer = BM.svg({ padding: 0.5 });
var line = BM.polyline( coordinates, { renderer: myRenderer } );
var circle = BM.circle( center, { renderer: myRenderer } );

Options

Option Type Default Description
padding Number 0.1 How much to extend the clip area around the map view (relative to its size) e.g. 0.1 would be 10% of map view in each direction
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
update Event Fired when the renderer updates its bounds, center and zoom, for example when its map has moved
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Functions

There are several static functions which can be called without instantiating BM.SVG:
Function Returns Description
create(<String> name) SVGElement Returns a instance of SVGElement, corresponding to the class name passed. For example, using 'line' will return an instance of SVGLineElement.
pointsToPath(<Point[]> rings, <Boolean> closed) String Generates a SVG path string for multiple rings, with each ring turning into "M..BM..BM.." instructions

Canvas

Allows vector layers to be displayed with <canvas>. Inherits Renderer. Due to technical limitations, Canvas is not available in all web browsers, notably IE8, and overlapping geometries might not display properly in some edge cases.

Usage example

Use Canvas by default for all paths in the map:

var map = BM.map('map', {
    renderer: BM.canvas()
});

Use a Canvas renderer with extra padding for specific vector geometries:

var map = BM.map('map');
var myRenderer = BM.canvas({ padding: 0.5 });
var line = BM.polyline( coordinates, { renderer: myRenderer } );
var circle = BM.circle( center, { renderer: myRenderer } );

Creation

Factory Description
BM.canvas(<Renderer options> options?) Creates a Canvas renderer with the given options.

Options

Option Type Default Description
padding Number 0.1 How much to extend the clip area around the map view (relative to its size) e.g. 0.1 would be 10% of map view in each direction
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
update Event Fired when the renderer updates its bounds, center and zoom, for example when its map has moved
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

LayerGroup

Used to group several layers and handle them as one. If you add it to the map, any layers added or removed from the group will be added/removed on the map as well. Extends Layer.

Usage example

BM.layerGroup([marker1, marker2])
    .addLayer(polyline)
    .addTo(map);

Creation

Factory Description
BM.layerGroup(<Layer[]> layers?) Create a layer group, optionally given an initial set of layers.

Options

Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the layer group (as a GeoJSON FeatureCollection, GeometryCollection, or MultiPoint).

addLayer(<Layer> layer) this

Adds the given layer to the group.

removeLayer(<Layer> layer) this

Removes the given layer from the group.

removeLayer(<Number> id) this

Removes the layer with the given internal ID from the group.

hasLayer(<Layer> layer) Boolean

Returns true if the given layer is currently added to the group.

hasLayer(<Number> id) Boolean

Returns true if the given internal ID is currently added to the group.

clearLayers() this

Removes all the layers from the group.

invoke(<String> methodName, ) this

Calls methodName on every layer contained in this group, passing any additional parameters. Has no effect if the layers contained do not implement methodName.

eachLayer(<Function> fn, <Object> context?) this

Iterates over the layers of the group, optionally specifying context of the iterator function.

group.eachLayer(function (layer) {
    layer.bindPopup('Hello');
});
getLayer(<Number> id) Layer

Returns the layer with the given internal ID.

getLayers() Layer[]

Returns an array of all the layers added to the group.

setZIndex(<Number> zIndex) this

Calls setZIndex on every layer contained in this group, passing the z-index.

getLayerId(<Layer> layer) Number

Returns the internal ID for a layer

bringLayerToFrontAt() this

Brings the layer to the top of another layer

bringLayerToBackAt() this

Brings the layer to the back of another layer

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

FeatureGroup

Extended LayerGroup that makes it easier to do the same thing to all its member layers:

Usage example

BM.featureGroup([marker1, marker2, polyline])
    .bindPopup('Hello world!')
    .on('click', function() { alert('Clicked on a member of the group!'); })
    .addTo(map);

Creation

Factory Description
BM.featureGroup(<Layer[]> layers) Create a feature group, optionally given an initial set of layers.

Options

Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
layeradd LayerEvent Fired when a layer is added to this FeatureGroup
layerremove LayerEvent Fired when a layer is removed from this FeatureGroup
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
setStyle(<Path options> style) this

Sets the given path options to each layer of the group that has a setStyle method.

bringToFront() this

Brings the layer group to the top of all other layers

bringToBack() this

Brings the layer group to the back of all other layers

getBounds() LatLngBounds

Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the layer group (as a GeoJSON FeatureCollection, GeometryCollection, or MultiPoint).

addLayer(<Layer> layer) this

Adds the given layer to the group.

removeLayer(<Layer> layer) this

Removes the given layer from the group.

removeLayer(<Number> id) this

Removes the layer with the given internal ID from the group.

hasLayer(<Layer> layer) Boolean

Returns true if the given layer is currently added to the group.

hasLayer(<Number> id) Boolean

Returns true if the given internal ID is currently added to the group.

clearLayers() this

Removes all the layers from the group.

invoke(<String> methodName, ) this

Calls methodName on every layer contained in this group, passing any additional parameters. Has no effect if the layers contained do not implement methodName.

eachLayer(<Function> fn, <Object> context?) this

Iterates over the layers of the group, optionally specifying context of the iterator function.

group.eachLayer(function (layer) {
    layer.bindPopup('Hello');
});
getLayer(<Number> id) Layer

Returns the layer with the given internal ID.

getLayers() Layer[]

Returns an array of all the layers added to the group.

setZIndex(<Number> zIndex) this

Calls setZIndex on every layer contained in this group, passing the z-index.

getLayerId(<Layer> layer) Number

Returns the internal ID for a layer

bringLayerToFrontAt() this

Brings the layer to the top of another layer

bringLayerToBackAt() this

Brings the layer to the back of another layer

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

GeoJSON

Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse GeoJSON data and display it on the map. Extends FeatureGroup.

Usage example

BM.geoJSON(data, {
    style: function (feature) {
        return {color: feature.properties.color};
    }
}).bindPopup(function (layer) {
    return layer.feature.properties.description;
}).addTo(map);

Creation

Factory Description
BM.geoJSON(<Object> geojson?, <GeoJSON options> options?) Creates a GeoJSON layer. Optionally accepts an object in GeoJSON format to display on the map (you can alternatively add it later with addData method) and an options object.

Options

Option Type Default Description
pointToLayer Function * A Function defining how GeoJSON points spawn Bigemap layers. It is internally called when data is added, passing the GeoJSON point feature and its LatLng. The default is to spawn a default Marker:
function(geoJsonPoint, latlng) {
    return BM.marker(latlng);
}
style Function * A Function defining the Path options for styling GeoJSON lines and polygons, called internally when data is added. The default value is to not override any defaults:
function (geoJsonFeature) {
    return {}
}
onEachFeature Function * A Function that will be called once for each created Feature, after it has been created and styled. Useful for attaching events and popups to features. The default is to do nothing with the newly created layers:
function (feature, layer) {}
filter Function * A Function that will be used to decide whether to include a feature or not. The default is to include all features:
function (geoJsonFeature) {
    return true;
}

Note: dynamically changing the filter option will have effect only on newly added data. It will not re-evaluate already included features.

coordsToLatLng Function * A Function that will be used for converting GeoJSON coordinates to LatLngs. The default is the coordsToLatLng static method.
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
layeradd LayerEvent Fired when a layer is added to this FeatureGroup
layerremove LayerEvent Fired when a layer is removed from this FeatureGroup
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addData(data) this

Adds a GeoJSON object to the layer.

resetStyle(layer) this

Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.

setStyle(style) this

Changes styles of GeoJSON vector layers with the given style function.

Method Returns Description
bringToFront() this

Brings the layer group to the top of all other layers

bringToBack() this

Brings the layer group to the back of all other layers

getBounds() LatLngBounds

Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).

Method Returns Description
toGeoJSON() Object

Returns a GeoJSON representation of the layer group (as a GeoJSON FeatureCollection, GeometryCollection, or MultiPoint).

addLayer(<Layer> layer) this

Adds the given layer to the group.

removeLayer(<Layer> layer) this

Removes the given layer from the group.

removeLayer(<Number> id) this

Removes the layer with the given internal ID from the group.

hasLayer(<Layer> layer) Boolean

Returns true if the given layer is currently added to the group.

hasLayer(<Number> id) Boolean

Returns true if the given internal ID is currently added to the group.

clearLayers() this

Removes all the layers from the group.

invoke(<String> methodName, ) this

Calls methodName on every layer contained in this group, passing any additional parameters. Has no effect if the layers contained do not implement methodName.

eachLayer(<Function> fn, <Object> context?) this

Iterates over the layers of the group, optionally specifying context of the iterator function.

group.eachLayer(function (layer) {
    layer.bindPopup('Hello');
});
getLayer(<Number> id) Layer

Returns the layer with the given internal ID.

getLayers() Layer[]

Returns an array of all the layers added to the group.

setZIndex(<Number> zIndex) this

Calls setZIndex on every layer contained in this group, passing the z-index.

getLayerId(<Layer> layer) Number

Returns the internal ID for a layer

bringLayerToFrontAt() this

Brings the layer to the top of another layer

bringLayerToBackAt() this

Brings the layer to the back of another layer

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Functions

There are several static functions which can be called without instantiating BM.GeoJSON:
Function Returns Description
geometryToLayer(<Object> featureData, <GeoJSON options> options?) Layer Creates a Layer from a given GeoJSON feature. Can use a custom pointToLayer and/or coordsToLatLng functions if provided as options.
coordsToLatLng(<Array> coords) LatLng Creates a LatLng object from an array of 2 numbers (longitude, latitude) or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.
coordsToLatLngs(<Array> coords, <Number> levelsDeep?, <Function> coordsToLatLng?) Array Creates a multidimensional array of LatLngs from a GeoJSON coordinates array. levelsDeep specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default). Can use a custom coordsToLatLng function.
latLngToCoords(<LatLng> latlng, <Number> precision?) Array Reverse of coordsToLatLng
latLngsToCoords(<Array> latlngs, <Number> levelsDeep?, <Boolean> closed?) Array Reverse of coordsToLatLngs closed determines whether the first point should be appended to the end of the array to close the feature, only used when levelsDeep is 0. False by default.
asFeature(<Object> geojson) Object Normalize GeoJSON geometries/features into GeoJSON features.

GridLayer

Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces TileLayer.Canvas. GridLayer can be extended to create a tiled grid of HTML elements like <canvas>, <img> or <div>. GridLayer will handle creating and animating these DOM elements for you.

Usage example

Synchronous usage

To create a custom layer, extend GridLayer and implement the createTile() method, which will be passed a Point object with the x, y, and z (zoom level) coordinates to draw your tile.

var CanvasLayer = BM.GridLayer.extend({
    createTile: function(coords){
        // create a <canvas> element for drawing
        var tile = BM.DomUtil.create('canvas', 'bigemap-tile');
        // setup tile width and height according to the options
        var size = this.getTileSize();
        tile.width = size.x;
        tile.height = size.y;
        // get a canvas context and draw something on it using coords.x, coords.y and coords.z
        var ctx = tile.getContext('2d');
        // return the tile so it can be rendered on screen
        return tile;
    }
});

Asynchronous usage

Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the done() callback.

var CanvasLayer = BM.GridLayer.extend({
    createTile: function(coords, done){
        var error;
        // create a <canvas> element for drawing
        var tile = BM.DomUtil.create('canvas', 'bigemap-tile');
        // setup tile width and height according to the options
        var size = this.getTileSize();
        tile.width = size.x;
        tile.height = size.y;
        // draw something asynchronously and pass the tile to the done() callback
        setTimeout(function() {
            done(error, tile);
        }, 1000);
        return tile;
    }
});

Creation

Factory Description
BM.gridLayer(<GridLayer options> options?) Creates a new instance of GridLayer with the supplied options.

Options

Option Type Default Description
tileSize Number|Point 256 Width and height of tiles in the grid. Use a number if width and height are equal, or BM.point(width, height) otherwise.
opacity Number 1.0 Opacity of the tiles. Can be used in the createTile() function.
updateWhenIdle Boolean (depends) Load new tiles only when panning ends. true by default on mobile browsers, in order to avoid too many requests and keep smooth navigation. false otherwise in order to display new tiles during panning, since it is easy to pan outside the keepBuffer option in desktop browsers.
updateWhenZooming Boolean true By default, a smooth zoom animation (during a touch zoom or a flyTo()) will update grid layers every integer zoom level. Setting this option to false will update the grid layer only when the smooth animation ends.
updateInterval Number 200 Tiles will not update more than once every updateInterval milliseconds when panning.
zIndex Number 1 The explicit zIndex of the tile layer.
bounds LatLngBounds undefined If set, tiles will only be loaded inside the set LatLngBounds.
minZoom Number 0 The minimum zoom level down to which this layer will be displayed (inclusive).
maxZoom Number undefined The maximum zoom level up to which this layer will be displayed (inclusive).
maxNativeZoom Number undefined Maximum zoom number the tile source has available. If it is specified, the tiles on all zoom levels higher than maxNativeZoom will be loaded from maxNativeZoom level and auto-scaled.
minNativeZoom Number undefined Minimum zoom number the tile source has available. If it is specified, the tiles on all zoom levels lower than minNativeZoom will be loaded from minNativeZoom level and auto-scaled.
noWrap Boolean false Whether the layer is wrapped around the antimeridian. If true, the GridLayer will only be displayed once at low zoom levels. Has no effect when the map CRS doesn't wrap around. Can be used in combination with bounds to prevent requesting tiles outside the CRS limits.
pane String 'tilePane' Map pane where the grid layer will be added.
className String '' A custom class name to assign to the tile layer. Empty by default.
keepBuffer Number 2 When panning the map, keep this many rows and columns of tiles before unloading them.
Option Type Default Description
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
loading Event Fired when the grid layer starts loading tiles.
tileunload TileEvent Fired when a tile is removed (e.g. when a tile goes off the screen).
tileloadstart TileEvent Fired when a tile is requested and starts loading.
tileerror TileErrorEvent Fired when there is an error loading a tile.
tileload TileEvent Fired when a tile loads.
load Event Fired when the grid layer loaded all visible tiles.
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
bringToFront() this

Brings the tile layer to the top of all tile layers.

bringToBack() this

Brings the tile layer to the bottom of all tile layers.

bringToFrontAt() this

Brings the tile layer to the top of another tile layers.

bringToBackAt() this

Brings the tile layer to the bottom of another tile layers.

getContainer() HTMLElement

Returns the HTML element that contains the tiles for this layer.

setOpacity(<Number> opacity) this

Changes the opacity of the grid layer.

setZIndex(<Number> zIndex) this

Changes the zIndex of the grid layer.

isLoading() Boolean

Returns true if any tile in the grid layer has not finished loading.

redraw() this

Causes the layer to clear all the tiles and request them again.

getTileSize() Point

Normalizes the tileSize option into a point. Used by the createTile() method.

Extension methods

Layers extending GridLayer shall reimplement the following method.
Method Returns Description
createTile(<Object> coords, <Function> done?) HTMLElement

Called only internally, must be overridden by classes extending GridLayer. Returns the HTMLElement corresponding to the given coords. If the done callback is specified, it must be called when the tile has finished loading and drawing.

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

LatLng

Represents a geographical point with a certain latitude and longitude.

Usage example

var latlng = BM.latLng(50.5, 30.5);

All Bigemap methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:

map.panTo([50, 30]);
map.panTo({lon: 30, lat: 50});
map.panTo({lat: 50, lng: 30});
map.panTo(BM.latLng(50, 30));

Creation

Factory Description
BM.latLng(<Number> latitude, <Number> longitude, <Number> altitude?) Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).
BM.latLng(<Array> coords) Expects an array of the form [Number, Number] or [Number, Number, Number] instead.
BM.latLng(<Object> coords) Expects an plain object of the form {lat: Number, lng: Number} or {lat: Number, lng: Number, alt: Number} instead.

Methods

Method Returns Description
equals(<LatLng> otherLatLng, <Number> maxMargin?) Boolean

Returns true if the given LatLng point is at the same position (within a small margin of error). The margin of error can be overridden by setting maxMargin to a small number.

toString() String

Returns a string representation of the point (for debugging purposes).

distanceTo(<LatLng> otherLatLng) Number

Returns the distance (in meters) to the given LatLng calculated using the Spherical Law of Cosines.

wrap() LatLng

Returns a new LatLng object with the longitude wrapped so it's always between -180 and +180 degrees.

toBounds(<Number> sizeInMeters) LatLngBounds

Returns a new LatLngBounds object in which each boundary is sizeInMeters/2 meters apart from the LatLng.

Properties

Property Type Description
lat Number Latitude in degrees
lng Number Longitude in degrees
alt Number Altitude in meters (optional)

LatLngBounds

Represents a rectangular geographical area on a map.

Usage example

var corner1 = BM.latLng(40.712, -74.227),
corner2 = BM.latLng(40.774, -74.125),
bounds = BM.latLngBounds(corner1, corner2);

All Bigemap methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:

map.fitBounds([
    [40.712, -74.227],
    [40.774, -74.125]
]);

Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners outside the [-180, 180] degrees longitude range.

Creation

Factory Description
BM.latLngBounds(<LatLng> corner1, <LatLng> corner2) Creates a LatLngBounds object by defining two diagonally opposite corners of the rectangle.
BM.latLngBounds(<LatLng[]> latlngs) Creates a LatLngBounds object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with fitBounds.

Methods

Method Returns Description
extend(<LatLng> latlng) this

Extend the bounds to contain the given point

extend(<LatLngBounds> otherBounds) this

Extend the bounds to contain the given bounds

pad(<Number> bufferRatio) LatLngBounds

Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. For example, a ratio of 0.5 extends the bounds by 50% in each direction. Negative values will retract the bounds.

getCenter() LatLng

Returns the center point of the bounds.

getSouthWest() LatLng

Returns the south-west point of the bounds.

getNorthEast() LatLng

Returns the north-east point of the bounds.

getNorthWest() LatLng

Returns the north-west point of the bounds.

getSouthEast() LatLng

Returns the south-east point of the bounds.

getWest() Number

Returns the west longitude of the bounds

getSouth() Number

Returns the south latitude of the bounds

getEast() Number

Returns the east longitude of the bounds

getNorth() Number

Returns the north latitude of the bounds

contains(<LatLngBounds> otherBounds) Boolean

Returns true if the rectangle contains the given one.

contains(<LatLng> latlng) Boolean

Returns true if the rectangle contains the given point.

intersects(<LatLngBounds> otherBounds) Boolean

Returns true if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.

overlaps(<Bounds> otherBounds) Boolean

Returns true if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.

toBBoxString() String

Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.

equals(<LatLngBounds> otherBounds, <Number> maxMargin?) Boolean

Returns true if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting maxMargin to a small number.

isValid() Boolean

Returns true if the bounds are properly initialized.

Point

Represents a point with x and y coordinates in pixels.

Usage example

var point = BM.point(200, 300);

All Bigemap methods and options that accept Point objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:

map.panBy([200, 300]);
map.panBy(BM.point(200, 300));

Creation

Factory Description
BM.point(<Number> x, <Number> y, <Boolean> round?) Creates a Point object with the given x and y coordinates. If optional round is set to true, rounds the x and y values.
BM.point(<Number[]> coords) Expects an array of the form [x, y] instead.
BM.point(<Object> coords) Expects a plain object of the form {x: Number, y: Number} instead.

Methods

Method Returns Description
clone() Point

Returns a copy of the current point.

add(<Point> otherPoint) Point

Returns the result of addition of the current and the given points.

subtract(<Point> otherPoint) Point

Returns the result of subtraction of the given point from the current.

divideBy(<Number> num) Point

Returns the result of division of the current point by the given number.

multiplyBy(<Number> num) Point

Returns the result of multiplication of the current point by the given number.

scaleBy(<Point> scale) Point

Multiply each coordinate of the current point by each coordinate of scale. In linear algebra terms, multiply the point by the scaling matrix defined by scale.

unscaleBy(<Point> scale) Point

Inverse of scaleBy. Divide each coordinate of the current point by each coordinate of scale.

round() Point

Returns a copy of the current point with rounded coordinates.

floor() Point

Returns a copy of the current point with floored coordinates (rounded down).

ceil() Point

Returns a copy of the current point with ceiled coordinates (rounded up).

distanceTo(<Point> otherPoint) Number

Returns the cartesian distance between the current and the given points.

equals(<Point> otherPoint) Boolean

Returns true if the given point has the same coordinates.

contains(<Point> otherPoint) Boolean

Returns true if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).

toString() String

Returns a string representation of the point for debugging purposes.

Properties

Property Type Description
x Number The x coordinate of the point
y Number The y coordinate of the point

Bounds

Represents a rectangular area in pixel coordinates.

Usage example

var p1 = BM.point(10, 10),
p2 = BM.point(40, 60),
bounds = BM.bounds(p1, p2);

All Bigemap methods that accept Bounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:

otherBounds.intersects([[10, 10], [40, 60]]);

Creation

Factory Description
BM.bounds(<Point> corner1, <Point> corner2) Creates a Bounds object from two corners coordinate pairs.
BM.bounds(<Point[]> points) Creates a Bounds object from the given array of points.

Methods

Method Returns Description
extend(<Point> point) this

Extends the bounds to contain the given point.

getCenter(<Boolean> round?) Point

Returns the center point of the bounds.

getBottomLeft() Point

Returns the bottom-left point of the bounds.

getTopRight() Point

Returns the top-right point of the bounds.

getTopLeft() Point

Returns the top-left point of the bounds (i.e. this.min).

getBottomRight() Point

Returns the bottom-right point of the bounds (i.e. this.max).

getSize() Point

Returns the size of the given bounds

contains(<Bounds> otherBounds) Boolean

Returns true if the rectangle contains the given one.

contains(<Point> point) Boolean

Returns true if the rectangle contains the given point.

intersects(<Bounds> otherBounds) Boolean

Returns true if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.

overlaps(<Bounds> otherBounds) Boolean

Returns true if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.

Properties

Property Type Description
min Point The top left corner of the rectangle.
max Point The bottom right corner of the rectangle.

Icon

Represents an icon to provide when creating a marker.

Usage example

var myIcon = BM.icon({
    iconUrl: 'my-icon.png',
    iconSize: [38, 95],
    iconAnchor: [22, 94],
    popupAnchor: [-3, -76],
    shadowUrl: 'my-icon-shadow.png',
    shadowSize: [68, 95],
    shadowAnchor: [22, 94]
});
BM.marker([50.505, 30.57], {icon: myIcon}).addTo(map);

BM.Icon.Default extends BM.Icon and is the blue icon Bigemap uses for markers by default.

Creation

Factory Description
BM.icon(<Icon options> options) Creates an icon instance with the given options.

Options

Option Type Default Description
iconUrl String null (required) The URL to the icon image (absolute or relative to your script path).
iconRetinaUrl String null The URL to a retina sized version of the icon image (absolute or relative to your script path). Used for Retina screen devices.
iconSize Point null Size of the icon image in pixels.
iconAnchor Point null The coordinates of the "tip" of the icon (relative to its top left corner). The icon will be aligned so that this point is at the marker's geographical location. Centered by default if size is specified, also can be set in CSS with negative margins.
popupAnchor Point null The coordinates of the point from which popups will "open", relative to the icon anchor.
shadowUrl String null The URL to the icon shadow image. If not specified, no shadow image will be created.
shadowRetinaUrl String null
shadowSize Point null Size of the shadow image in pixels.
shadowAnchor Point null The coordinates of the "tip" of the shadow (relative to its top left corner) (the same as iconAnchor if not specified).
className String '' A custom class name to assign to both icon and shadow images. Empty by default.

Methods

Method Returns Description
createIcon(<HTMLElement> oldIcon?) HTMLElement

Called internally when the icon has to be shown, returns a <img> HTML element styled according to the options.

createShadow(<HTMLElement> oldIcon?) HTMLElement

As createIcon, but for the shadow beneath it.

Icon.Default

A trivial subclass of Icon, represents the icon to use in Markers when no icon is specified. Points to the blue marker image distributed with Bigemap releases. In order to customize the default icon, just change the properties of BM.Icon.Default.prototype.options (which is a set of Icon options). If you want to completely replace the default icon, override the BM.Marker.prototype.options.icon with your own icon instead.
Option Type Default Description
imagePath String Icon.Default will try to auto-detect the location of the blue icon images. If you are placing these images in a non-standard way, set this option to point to the right path.

DivIcon

Represents a lightweight icon for markers that uses a simple <div> element instead of an image. Inherits from Icon but ignores the iconUrl and shadow options.

Usage example

var myIcon = BM.divIcon({className: 'my-div-icon'});
// you can set .my-div-icon styles in CSS
BM.marker([50.505, 30.57], {icon: myIcon}).addTo(map);

By default, it has a 'bigemap-div-icon' CSS class and is styled as a little white square with a shadow.

Creation

Factory Description
BM.divIcon(<DivIcon options> options) Creates a DivIcon instance with the given options.

Options

Option Type Default Description
html String '' Custom HTML code to put inside the div element, empty by default.
bgPos Point [0, 0] Optional relative position of the background, in pixels
Option Type Default Description
iconUrl String null (required) The URL to the icon image (absolute or relative to your script path).
iconRetinaUrl String null The URL to a retina sized version of the icon image (absolute or relative to your script path). Used for Retina screen devices.
iconSize Point null Size of the icon image in pixels.
iconAnchor Point null The coordinates of the "tip" of the icon (relative to its top left corner). The icon will be aligned so that this point is at the marker's geographical location. Centered by default if size is specified, also can be set in CSS with negative margins.
popupAnchor Point null The coordinates of the point from which popups will "open", relative to the icon anchor.
shadowUrl String null The URL to the icon shadow image. If not specified, no shadow image will be created.
shadowRetinaUrl String null
shadowSize Point null Size of the shadow image in pixels.
shadowAnchor Point null The coordinates of the "tip" of the shadow (relative to its top left corner) (the same as iconAnchor if not specified).
className String '' A custom class name to assign to both icon and shadow images. Empty by default.

Methods

Method Returns Description
createIcon(<HTMLElement> oldIcon?) HTMLElement

Called internally when the icon has to be shown, returns a <img> HTML element styled according to the options.

createShadow(<HTMLElement> oldIcon?) HTMLElement

As createIcon, but for the shadow beneath it.

Control.Zoom

A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its zoomControl option to false. Extends Control.

Creation

Factory Description
BM.control.zoom(<Control.Zoom options> options) Creates a zoom control

Options

Option Type Default Description
zoomInText String '+' The text set on the 'zoom in' button.
zoomInTitle String 'Zoom in' The title set on the 'zoom in' button.
zoomOutText String '&#x2212 ' The text set on the 'zoom out' button.
zoomOutTitle String 'Zoom out' The title set on the 'zoom out' button.
Option Type Default Description
position String 'topright' The position of the control (one of the map corners). Possible values are 'topleft', 'topright', 'bottomleft' or 'bottomright'

Methods

Method Returns Description
getPosition() string

Returns the position of the control.

setPosition(<string> position) this

Sets the position of the control.

getContainer() HTMLElement

Returns the HTMLElement that contains the control.

addTo(<Map> map) this

Adds the control to the given map.

remove() this

Removes the control from the map it is currently active on.

Control.Attribution

The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its attributionControl option to false, and it fetches attribution texts from layers with the getAttribution method automatically. Extends Control.

Creation

Factory Description
BM.control.attribution(<Control.Attribution options> options) Creates an attribution control.

Options

Option Type Default Description
prefix String 'Bigemap' The HTML text shown before the attributions. Pass false to disable. prefix: '©Bigemap'
Option Type Default Description
position String 'topright' The position of the control (one of the map corners). Possible values are 'topleft', 'topright', 'bottomleft' or 'bottomright'

Methods

Method Returns Description
setPrefix(<String> prefix) this

Sets the text before the attributions. setPrefix: function (prefix) { this.options.prefix = prefix; this._update(); return this; },

addAttribution(<String> text) this

Adds an attribution text (e.g. 'Vector data &copy; Mapbox').

removeAttribution(<String> text) this

Removes an attribution text.

Method Returns Description
getPosition() string

Returns the position of the control.

setPosition(<string> position) this

Sets the position of the control.

getContainer() HTMLElement

Returns the HTMLElement that contains the control.

addTo(<Map> map) this

Adds the control to the given map.

remove() this

Removes the control from the map it is currently active on.

Control.Layers

The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the detailed example). Extends Control.

Usage example

var baseLayers = {
    "Mapbox": mapbox,
    "OpenStreetMap": osm
};
var overlays = {
    "Marker": marker,
    "Roads": roadsLayer
};
BM.control.layers(baseLayers, overlays).addTo(map);

The baseLayers and overlays parameters are object literals with layer names as keys and Layer objects as values:

{
    "<someName1>": layer1,
    "<someName2>": layer2
}

The layer names can contain HTML, which allows you to add additional styling to the items:

{"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>": myLayer}

Creation

Factory Description
BM.control.layers(<Object> baselayers?, <Object> overlays?, <Control.Layers options> options?) Creates an attribution control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.

Options

Option Type Default Description
collapsed Boolean true If true, the control will be collapsed into an icon and expanded on mouse hover or touch.
autoZIndex Boolean true If true, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.
hideSingleBase Boolean false If true, the base layers in the control will be hidden when there is only one.
sortLayers Boolean false Whether to sort the layers. When false, layers will keep the order in which they were added to the control.
sortFunction Function * A compare function that will be used for sorting the layers, when sortLayers is true. The function receives both the BM.Layer instances and their names, as in sortFunction(layerA, layerB, nameA, nameB). By default, it sorts layers alphabetically by their name.
Option Type Default Description
position String 'topright' The position of the control (one of the map corners). Possible values are 'topleft', 'topright', 'bottomleft' or 'bottomright'

Methods

Method Returns Description
addBaseLayer(<Layer> layer, <String> name) this

Adds a base layer (radio button entry) with the given name to the control.

addOverlay(<Layer> layer, <String> name) this

Adds an overlay (checkbox entry) with the given name to the control.

removeLayer(<Layer> layer) this

Remove the given layer from the control.

expand() this

Expand the control container if collapsed.

collapse() this

Collapse the control container if expanded.

Method Returns Description
getPosition() string

Returns the position of the control.

setPosition(<string> position) this

Sets the position of the control.

getContainer() HTMLElement

Returns the HTMLElement that contains the control.

addTo(<Map> map) this

Adds the control to the given map.

remove() this

Removes the control from the map it is currently active on.

Control.Scale

A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends Control.

Usage example

BM.control.scale().addTo(map);

Creation

Factory Description
BM.control.scale(<Control.Scale options> options?) Creates an scale control with the given options.

Options

Option Type Default Description
maxWidth Number 100 Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).
metric Boolean True Whether to show the metric scale line (m/km).
imperial Boolean True Whether to show the imperial scale line (mi/ft).
updateWhenIdle Boolean false If true, the control is updated on moveend, otherwise it's always up-to-date (updated on move).
Option Type Default Description
position String 'topright' The position of the control (one of the map corners). Possible values are 'topleft', 'topright', 'bottomleft' or 'bottomright'

Methods

Method Returns Description
getPosition() string

Returns the position of the control.

setPosition(<string> position) this

Sets the position of the control.

getContainer() HTMLElement

Returns the HTMLElement that contains the control.

addTo(<Map> map) this

Adds the control to the given map.

remove() this

Removes the control from the map it is currently active on.

Browser

A namespace with static properties for browser/feature detection used by Bigemap internally.

Usage example

if (BM.Browser.ielt9) {
  alert('Upgrade your browser, dude!');
}

Properties

Property Type Description
ie Boolean true for all Internet Explorer versions (not Edge).
ielt9 Boolean true for Internet Explorer versions less than 9.
edge Boolean true for the Edge web browser.
webkit Boolean true for webkit-based browsers like Chrome and Safari (including mobile versions).
android Boolean true for any browser running on an Android platform.
android23 Boolean true for browsers running on Android 2 or Android 3.
androidStock Boolean true for the Android stock browser (i.e. not Chrome)
opera Boolean true for the Opera browser
chrome Boolean true for the Chrome browser.
gecko Boolean true for gecko-based browsers like Firefox.
safari Boolean true for the Safari browser.
opera12 Boolean true for the Opera browser supporting CSS transforms (version 12 or later).
win Boolean true when the browser is running in a Windows platform
ie3d Boolean true for all Internet Explorer versions supporting CSS transforms.
webkit3d Boolean true for webkit-based browsers supporting CSS transforms.
gecko3d Boolean true for gecko-based browsers supporting CSS transforms.
any3d Boolean true for all browsers supporting CSS transforms.
mobile Boolean true for all browsers running in a mobile device.
mobileWebkit Boolean true for all webkit-based browsers in a mobile device.
mobileWebkit3d Boolean true for all webkit-based browsers in a mobile device supporting CSS transforms.
msPointer Boolean true for browsers implementing the Microsoft touch events model (notably IE10).
pointer Boolean true for all browsers supporting pointer events.
touch Boolean true for all browsers supporting touch events. This does not necessarily mean that the browser is running in a computer with a touchscreen, it only means that the browser is capable of understanding touch events.
mobileOpera Boolean true for the Opera browser in a mobile device.
mobileGecko Boolean true for gecko-based browsers running in a mobile device.
retina Boolean true for browsers on a high-resolution "retina" screen.
canvas Boolean true when the browser supports <canvas>.
svg Boolean true when the browser supports SVG.
vml Boolean true if the browser supports VML.

Util

Various utility functions, used by Bigemap internally.

Functions

Function Returns Description
extend(<Object> dest, <Object> src?) Object Merges the properties of the src object (or multiple objects) into dest object and returns the latter. Has an BM.extend shortcut.
create(<Object> proto, <Object> properties?) Object Compatibility polyfill for Object.create
bind(<Function> fn, ) Function Returns a new function bound to the arguments passed, like Function.prototype.bind. Has a BM.bind() shortcut.
stamp(<Object> obj) Number Returns the unique ID of an object, assigning it one if it doesn't have it.
throttle(<Function> fn, <Number> time, <Object> context) Function Returns a function which executes function fn with the given scope context (so that the this keyword refers to context inside fn's code). The function fn will be called no more than one time per given amount of time. The arguments received by the bound function will be any arguments passed when binding the function, followed by any arguments passed when invoking the bound function. Has an BM.throttle shortcut.
wrapNum(<Number> num, <Number[]> range, <Boolean> includeMax?) Number Returns the number num modulo range in such a way so it lies within range[0] and range[1]. The returned value will be always smaller than range[1] unless includeMax is set to true.
falseFn() Function Returns a function which always returns false.
formatNum(<Number> num, <Number> digits?) Number Returns the number num rounded to digits decimals, or to 6 decimals by default.
trim(<String> str) String Compatibility polyfill for String.prototype.trim
splitWords(<String> str) String[] Trims and splits the string on whitespace and returns the array of parts.
setOptions(<Object> obj, <Object> options) Object Merges the given properties to the options of the obj object, returning the resulting options. See Class options. Has an BM.setOptions shortcut.
getParamString(<Object> obj, <String> existingUrl?, <Boolean> uppercase?) String Converts an object into a parameter URL string, e.g. {a: "foo", b: "bar"} translates to '?a=foo&b=bar'. If existingUrl is set, the parameters will be appended at the end. If uppercase is true, the parameter names will be uppercased (e.g. '?A=foo&B=bar')
template(<String> str, <Object> data) String Simple templating facility, accepts a template string of the form 'Hello {a}, {b}' and a data object like {a: 'foo', b: 'bar'}, returns evaluated string ('Hello foo, bar'). You can also specify functions instead of strings for data values — they will be evaluated passing data as an argument.
isArray(obj) Boolean Compatibility polyfill for Array.isArray
indexOf(<Array> array, <Object> el) Number Compatibility polyfill for Array.prototype.indexOf
requestAnimFrame(<Function> fn, <Object> context?, <Boolean> immediate?) Number Schedules fn to be executed when the browser repaints. fn is bound to context if given. When immediate is set, fn is called immediately if the browser doesn't have native support for window.requestAnimationFrame, otherwise it's delayed. Returns a request ID that can be used to cancel the request.
cancelAnimFrame(<Number> id) undefined Cancels a previous requestAnimFrame. See also window.cancelAnimationFrame.

Properties

Property Type Description
lastId Number Last unique ID used by stamp()
emptyImageUrl String Data URI string containing a base64-encoded empty GIF image. Used as a hack to free memory from unused images on WebKit-powered mobile devices (by setting image src to this string).

Transformation

Represents an affine transformation: a set of coefficients a, b, c, d for transforming a point of a form (x, y) into (a*x + b, c*y + d) and doing the reverse. Used by Bigemap in its projections code.

Usage example

var transformation = BM.transformation(2, 5, -1, 10),
    p = BM.point(1, 2),
    p2 = transformation.transform(p), //  BM.point(7, 8)
    p3 = transformation.untransform(p2); //  BM.point(1, 2)

Creation

Factory Description
BM.transformation(<Number> a, <Number> b, <Number> c, <Number> d) Instantiates a Transformation object with the given coefficients.
BM.transformation(<Array> coefficients) Expects an coefficients array of the form [a: Number, b: Number, c: Number, d: Number].

Methods

Method Returns Description
transform(<Point> point, <Number> scale?) Point

Returns a transformed point, optionally multiplied by the given scale. Only accepts actual BM.Point instances, not arrays.

untransform(<Point> point, <Number> scale?) Point

Returns the reverse transformation of the given point, optionally divided by the given scale. Only accepts actual BM.Point instances, not arrays.

LineUtil

Various utility functions for polyline points processing, used by Bigemap internally to make polylines lightning-fast.

Functions

Function Returns Description
simplify(<Point[]> points, <Number> tolerance) Point[] Dramatically reduces the number of points in a polyline while retaining its shape and returns a new array of simplified points, using the Douglas-Peucker algorithm. Used for a huge performance boost when processing/displaying Bigemap polylines for each zoom level and also reducing visual noise. tolerance affects the amount of simplification (lesser value means higher quality but slower and with more points). Also released as a separated micro-library Simplify.js.
pointToSegmentDistance(<Point> p, <Point> p1, <Point> p2) Number Returns the distance between point p and segment p1 to p2.
closestPointOnSegment(<Point> p, <Point> p1, <Point> p2) Number Returns the closest point from a point p on a segment p1 to p2.
clipSegment(<Point> a, <Point> b, <Bounds> bounds, <Boolean> useLastCode?, <Boolean> round?) Point[]|Boolean Clips the segment a to b by rectangular bounds with the Cohen-Sutherland algorithm (modifying the segment points directly!). Used by Bigemap to only show polyline points that are on the screen or near, increasing performance.
isFlat(<LatLng[]> latlngs) Boolean Returns true if latlngs is a flat array, false is nested.

PolyUtil

Various utility functions for polygon geometries.

Functions

Function Returns Description
clipPolygon(<Point[]> points, <Bounds> bounds, <Boolean> round?) Point[] Clips the polygon geometry defined by the given points by the given bounds (using the Sutherland-Hodgman algorithm). Used by Bigemap to only show polygon points that are on the screen or near, increasing performance. Note that polygon points needs different algorithm for clipping than polyline, so there's a separate method for it.

DomEvent

Utility functions to work with the DOM events, used by Bigemap internally.

Functions

Function Returns Description
on(<HTMLElement> el, <String> types, <Function> fn, <Object> context?) this Adds a listener function (fn) to a particular DOM event type of the element el. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').
on(<HTMLElement> el, <Object> eventMap, <Object> context?) this Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}
off(<HTMLElement> el, <String> types, <Function> fn, <Object> context?) this Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular DOM event from the element. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.
off(<HTMLElement> el, <Object> eventMap, <Object> context?) this Removes a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}
stopPropagation(<DOMEvent> ev) this Stop the given event from propagation to parent elements. Used inside the listener functions:
BM.DomEvent.on(div, 'click', function (ev) {
    BM.DomEvent.stopPropagation(ev);
});
disableScrollPropagation(<HTMLElement> el) this Adds stopPropagation to the element's 'mousewheel' events (plus browser variants).
disableClickPropagation(<HTMLElement> el) this Adds stopPropagation to the element's 'click', 'doubleclick', 'mousedown' and 'touchstart' events (plus browser variants).
preventDefault(<DOMEvent> ev) this Prevents the default action of the DOM Event ev from happening (such as following a link in the href of the a element, or doing a POST request with page reload when a <form> is submitted). Use it inside listener functions.
stop(<DOMEvent> ev) this Does stopPropagation and preventDefault at the same time.
getMousePosition(<DOMEvent> ev, <HTMLElement> container?) Point Gets normalized mouse position from a DOM event relative to the container or to the whole page if not specified.
getWheelDelta(<DOMEvent> ev) Number Gets normalized wheel delta from a mousewheel DOM event, in vertical pixels scrolled (negative if scrolling down). Events from pointing devices without precise scrolling are mapped to a best guess of 60 pixels.
addListener() this Alias to BM.DomEvent.on
removeListener() this Alias to BM.DomEvent.off

DomUtil

Utility functions to work with the DOM tree, used by Bigemap internally. Most functions expecting or returning a HTMLElement also work for SVG elements. The only difference is that classes refer to CSS classes in HTML and SVG classes in SVG.

Functions

Function Returns Description
get(<String|HTMLElement> id) HTMLElement Returns an element given its DOM id, or returns the element itself if it was passed directly.
getStyle(<HTMLElement> el, <String> styleAttrib) String Returns the value for a certain style attribute on an element, including computed values or values set through CSS.
create(<String> tagName, <String> className?, <HTMLElement> container?) HTMLElement Creates an HTML element with tagName, sets its class to className, and optionally appends it to container element.
remove(<HTMLElement> el) Removes el from its parent element
empty(<HTMLElement> el) Removes all of el's children elements from el
toFront(<HTMLElement> el) Makes el the last child of its parent, so it renders in front of the other children.
toBack(<HTMLElement> el) Makes el the first child of its parent, so it renders behind the other children.
toBackAt(<HTMLElement> el, <HTMLElement> another) Makes el the front of another, so it renders behind the another. Makes el the back child of another, so it renders before the another.
hasClass(<HTMLElement> el, <String> name) Boolean Returns true if the element's class attribute contains name.
addClass(<HTMLElement> el, <String> name) Adds name to the element's class attribute.
removeClass(<HTMLElement> el, <String> name) Removes name from the element's class attribute.
setClass(<HTMLElement> el, <String> name) Sets the element's class.
getClass(<HTMLElement> el) String Returns the element's class.
setOpacity(<HTMLElement> el, <Number> opacity) Set the opacity of an element (including old IE support). opacity must be a number from 0 to 1.
testProp(<String[]> props) String|false Goes through the array of style names and returns the first name that is a valid style name for an element. If no such name is found, it returns false. Useful for vendor-prefixed styles like transform.
setTransform(<HTMLElement> el, <Point> offset, <Number> scale?) Resets the 3D CSS transform of el so it is translated by offset pixels and optionally scaled by scale. Does not have an effect if the browser doesn't support 3D CSS transforms.
setPosition(<HTMLElement> el, <Point> position) Sets the position of el to coordinates specified by position, using CSS translate or top/left positioning depending on the browser (used by Bigemap internally to position its layers).
getPosition(<HTMLElement> el) Point Returns the coordinates of an element previously positioned with setPosition.
disableTextSelection() Prevents the user from generating selectstart DOM events, usually generated when the user drags the mouse through a page with text. Used internally by Bigemap to override the behaviour of any click-and-drag interaction on the map. Affects drag interactions on the whole document.
enableTextSelection() Cancels the effects of a previous BM.DomUtil.disableTextSelection.
disableImageDrag() As BM.DomUtil.disableTextSelection, but for dragstart DOM events, usually generated when the user drags an image.
enableImageDrag() Cancels the effects of a previous BM.DomUtil.disableImageDrag.
preventOutline(<HTMLElement> el) Makes the outline of the element el invisible. Used internally by Bigemap to prevent focusable elements from displaying an outline when the user performs a drag interaction on them.
restoreOutline() Cancels the effects of a previous BM.DomUtil.preventOutline.

Properties

Property Type Description
TRANSFORM String Vendor-prefixed transform style name (e.g. 'webkitTransform' for WebKit).
TRANSITION String Vendor-prefixed transition style name.
TRANSITION_END String Vendor-prefixed transitionend event name.

PosAnimation

Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.

Usage example

var fx = new BM.PosAnimation();
fx.run(el, [300, 500], 0.5);

Constructor

Constructor Description
BM.PosAnimation() Creates a PosAnimation object.

Events

Event Data Description
start Event Fired when the animation starts
step Event Fired continuously during the animation.
end Event Fired when the animation ends.

Methods

Method Returns Description
run(<HTMLElement> el, <Point> newPos, <Number> duration?, <Number> easeLinearity?)

Run an animation of a given element to a new position, optionally setting duration in seconds (0.25 by default) and easing linearity factor (3rd argument of the cubic bezier curve, 0.5 by default).

stop()

Stops the animation (if currently running).

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Draggable

A class for making DOM elements draggable (including touch support). Used internally for map and marker dragging. Only works for elements that were positioned with BM.DomUtil.setPosition.

Usage example

var draggable = new BM.Draggable(elementToDrag);
draggable.enable();

Constructor

Constructor Description
BM.Draggable(<HTMLElement> el, <HTMLElement> dragHandle?, <Boolean> preventOutline?, <Draggable options> options?) Creates a Draggable object for moving el when you start dragging the dragHandle element (equals el itself by default).

Options

Option Type Default Description
clickTolerance Number 3 The max number of pixels a user can shift the mouse pointer during a click for it to be considered a valid click (as opposed to a mouse drag).

Events

Event Data Description
down Event Fired when a drag is about to start.
dragstart Event Fired when a drag starts
predrag Event Fired continuously during dragging before each corresponding update of the element's position.
drag Event Fired continuously during dragging.
dragend DragEndEvent Fired when the drag ends.

Methods

Method Returns Description
enable()

Enables the dragging ability

disable()

Disables the dragging ability

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Class

BM.Class powers the OOP facilities of Bigemap and is used to create almost all of the Bigemap classes documented here. In addition to implementing a simple classical inheritance model, it introduces several special properties for convenient code organization — options, includes and statics.

Usage example

var MyClass = BM.Class.extend({
initialize: function (greeter) {
    this.greeter = greeter;
    // class constructor
},
greet: function (name) {
    alert(this.greeter + ', ' + name)
    }
});
// create instance of MyClass, passing "Hello" to the constructor
var a = new MyClass("Hello");
// call greet method, alerting "Hello, World"
a.greet("World");

Class Factories

You may have noticed that Bigemap objects are created without using the new keyword. This is achieved by complementing each class with a lowercase factory method:

new BM.Map('map'); // becomes:
BM.map('map');

The factories are implemented very easily, and you can do this for your own classes:

BM.map = function (id, options) {
    return new BM.Map(id, options);
};

Inheritance

You use BM.Class.extend to define new classes, but you can use the same method on any class to inherit from it:

var MyChildClass = MyClass.extend({
    // ... new properties and methods
});

This will create a class that inherits all methods and properties of the parent class (through a proper prototype chain), adding or overriding the ones you pass to extend. It will also properly react to instanceof:

var a = new MyChildClass();
a instanceof MyChildClass; // true
a instanceof MyClass; // true

You can call parent methods (including constructor) from corresponding child ones (as you do with super calls in other languages) by accessing parent class prototype and using JavaScript's call or apply:

var MyChildClass = MyClass.extend({
    initialize: function () {
        MyClass.prototype.initialize.call(this, "Yo");
    },
    greet: function (name) {
        MyClass.prototype.greet.call(this, 'bro ' + name + '!');
    }
});
var a = new MyChildClass();
a.greet('Jason'); // alerts "Yo, bro Jason!"

Options

options is a special property that unlike other objects that you pass to extend will be merged with the parent one instead of overriding it completely, which makes managing configuration of objects and default values convenient:

var MyClass = BM.Class.extend({
    options: {
        myOption1: 'foo',
        myOption2: 'bar'
    }
});
var MyChildClass = MyClass.extend({
    options: {
        myOption1: 'baz',
        myOption3: 5
    }
});
var a = new MyChildClass();
a.options.myOption1; // 'baz'
a.options.myOption2; // 'bar'
a.options.myOption3; // 5

There's also BM.Util.setOptions, a method for conveniently merging options passed to constructor with the defaults defines in the class:

var MyClass = BM.Class.extend({
    options: {
        foo: 'bar',
        bla: 5
    },
    initialize: function (options) {
        BM.Util.setOptions(this, options);
        ...
    }
});
var a = new MyClass({bla: 10});
a.options; // {foo: 'bar', bla: 10}

Includes

includes is a special class property that merges all specified objects into the class (such objects are called mixins).

 var MyMixin = {
    foo: function () { ... },
    bar: 5
};
var MyClass = BM.Class.extend({
    includes: MyMixin
});
var a = new MyClass();
a.foo();

You can also do such includes in runtime with the include method:

MyClass.include(MyMixin);

statics is just a convenience property that injects specified object properties as the static properties of the class, useful for defining constants:

var MyClass = BM.Class.extend({
    statics: {
        FOO: 'bar',
        BLA: 5
    }
});
MyClass.FOO; // 'bar'

Constructor hooks

If you're a plugin developer, you often need to add additional initialization code to existing classes (e.g. editing hooks for BM.Polyline). Bigemap comes with a way to do it easily using the addInitHook method:

MyClass.addInitHook(function () {
    // ... do something in constructor additionally
    // e.g. add event listeners, set custom properties etc.
});

You can also use the following shortcut when you just need to make one additional method call:

MyClass.addInitHook('methodName', arg1, arg2, …);

Functions

Function Returns Description
extend(<Object> props) Function Extends the current class given the properties to be included. Returns a Javascript function that is a class constructor (to be called with new).
include(<Object> properties) this Includes a mixin into the current class.
mergeOptions(<Object> options) this Merges options into the defaults of the class.
addInitHook(<Function> fn) this Adds a constructor hook to the class.

Evented

A set of methods shared between event-powered classes (like Map and Marker). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire 'click' event).

Usage example

map.on('click', function(e) {
    alert(e.latlng);
} );

Bigemap deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:

function onClick(e) { ... }
map.on('click', onClick);
map.off('click', onClick);

Methods

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Layer

A set of methods from the Layer base class that all Bigemap layers use. Inherits all methods, options and events from BM.Evented.

Usage example

var layer = BM.Marker(latlng).addTo(map);
layer.addTo(map);
layer.remove();

Options

Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map

Popup events

Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发

Tooltip events

Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Classes extending BM.Layer will inherit the following methods:
Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Extension methods

Every layer should extend from BM.Layer and (re-)implement the following methods.
Method Returns Description
onAdd(<Map> map) this

Should contain code that creates DOM elements for the layer, adds them to map panes where they should belong and puts listeners on relevant map events. Called on map.addLayer(layer).

onRemove(<Map> map) this

Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in onAdd. Called on map.removeLayer(layer).

getEvents() Object

This optional method should return an object like { viewreset: this._reset } for addEventListener. The event handlers in this object will be automatically added and removed from the map with your layer.

getAttribution() String

This optional method should return a string containing HTML to be shown on the Attribution control whenever the layer is visible.

beforeAdd(<Map> map) this

Optional method. Called on map.addLayer(layer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.

Popup methods

所有图层共享一组便于将弹出窗口绑定到它的方法。
var layer = BM.Polygon(latlngs).bindPopup('Hi There!').addTo(map);
layer.openPopup();
layer.closePopup();

单击图层时弹出窗口也将自动打开,当从地图中删除图层或打开另一个弹出窗口时,弹出窗口将关闭。

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Tooltip methods

All layers share a set of methods convenient for binding tooltips to it.
var layer = BM.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);
layer.openTooltip();
layer.closeTooltip();
Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Interactive layer

Some Layers can be made interactive - when the user interacts with such a layer, mouse events like click and mouseover can be handled. Use the event handling methods to handle these events.

Options

Option Type Default Description
interactive Boolean true If false, the layer will not emit mouse events and will act as a part of the underlying map.
bubblingMouseEvents Boolean true When true, a mouse event on this layer will trigger the same event on the map (unless BM.DomEvent.stopPropagation is used).
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Mouse events

Event Data Description
click MouseEvent Fired when the user clicks (or taps) the layer.
dblclick MouseEvent Fired when the user double-clicks (or double-taps) the layer.
mousedown MouseEvent Fired when the user pushes the mouse button on the layer.
mouseover MouseEvent Fired when the mouse enters the layer.
mouseout MouseEvent Fired when the mouse leaves the layer.
contextmenu MouseEvent Fired when the user right-clicks on the layer, prevents default browser context menu from showing if there are listeners on this event. Also fired on mobile when the user holds a single touch for a second (also called long press).
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Control

BM.Control is a base class for implementing map controls. Handles positioning. All other controls extend from this class.

Options

Option Type Default Description
position String 'topright' The position of the control (one of the map corners). Possible values are 'topleft', 'topright', 'bottomleft' or 'bottomright'

Methods

Classes extending BM.Control will inherit the following methods:
Method Returns Description
getPosition() string

Returns the position of the control.

setPosition(<string> position) this

Sets the position of the control.

getContainer() HTMLElement

Returns the HTMLElement that contains the control.

addTo(<Map> map) this

Adds the control to the given map.

remove() this

Removes the control from the map it is currently active on.

Extension methods

Every control should extend from BM.Control and (re-)implement the following methods.
Method Returns Description
onAdd(<Map> map) HTMLElement

Should return the container DOM element for the control and add listeners on relevant map events. Called on control.addTo(map).

onRemove(<Map> map)

Optional method. Should contain all clean up code that removes the listeners previously added in onAdd. Called on control.remove().

Handler

Abstract class for map interaction handlers

Methods

Method Returns Description
enable() this

Enables the handler

disable() this

Disables the handler

enabled() Boolean

Returns true if the handler is enabled

Extension methods

Classes inheriting from Handler must implement the two following methods:
Method Returns Description
addHooks()

Called when the handler is enabled, should add event hooks.

removeHooks()

Called when the handler is disabled, should remove the event hooks added previously.

Projection

An object with methods for projecting geographical coordinates of the world onto a flat surface (and back). See Map projection.

Methods

Method Returns Description
project(<LatLng> latlng) Point

Projects geographical coordinates into a 2D point. Only accepts actual BM.LatLng instances, not arrays.

unproject(<Point> point) LatLng

The inverse of project. Projects a 2D point into a geographical location. Only accepts actual BM.Point instances, not arrays.

Properties

Property Type Description
bounds Bounds The bounds (specified in CRS units) where the projection is valid

Defined projections

Bigemap comes with a set of already defined Projections out of the box:
Projection Description
BM.Projection.LonLat Equirectangular, or Plate Carree projection — the most simple projection, mostly used by GIS enthusiasts. Directly maps x as longitude, and y as latitude. Also suitable for flat worlds, e.g. game maps. Used by the EPSG:4326 and Simple CRS.
BM.Projection.Mercator Elliptical Mercator projection — more complex than Spherical Mercator. Takes into account that Earth is a geoid, not a perfect sphere. Used by the EPSG:3395 CRS.
BM.Projection.SphericalMercator Spherical Mercator projection — the most common projection for online maps, used by almost all free and commercial tile providers. Assumes that Earth is a sphere. Used by the EPSG:3857 CRS.

CRS

Methods

Method Returns Description
latLngToPoint(<LatLng> latlng, <Number> zoom) Point

Projects geographical coordinates into pixel coordinates for a given zoom.

pointToLatLng(<Point> point, <Number> zoom) LatLng

The inverse of latLngToPoint. Projects pixel coordinates on a given zoom into geographical coordinates.

project(<LatLng> latlng) Point

Projects geographical coordinates into coordinates in units accepted for this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).

unproject(<Point> point) LatLng

Given a projected coordinate returns the corresponding LatLng. The inverse of project.

scale(<Number> zoom) Number

Returns the scale used when transforming projected coordinates into pixel coordinates for a particular zoom. For example, it returns 256 * 2^zoom for Mercator-based CRS.

zoom(<Number> scale) Number

Inverse of scale(), returns the zoom level corresponding to a scale factor of scale.

getProjectedBounds(<Number> zoom) Bounds

Returns the projection's bounds scaled and transformed for the provided zoom.

distance(<LatLng> latlng1, <LatLng> latlng2) Number

Returns the distance between two geographical coordinates.

wrapLatLng(<LatLng> latlng) LatLng

Returns a LatLng where lat and lng has been wrapped according to the CRS's wrapLat and wrapLng properties, if they are outside the CRS's bounds.

wrapLatLngBounds(<LatLngBounds> bounds) LatLngBounds

Returns a LatLngBounds with the same size as the given one, ensuring that its center is within the CRS's bounds. Only accepts actual BM.LatLngBounds instances, not arrays.

Properties

Property Type Description
code String Standard code name of the CRS passed into WMS services (e.g. 'EPSG:3857')
wrapLng Number[] An array of two numbers defining whether the longitude (horizontal) coordinate axis wraps around a given range and how. Defaults to [-180, 180] in most geographical CRSs. If undefined, the longitude axis does not wrap around.
wrapLat Number[] Like wrapLng, but for the latitude (vertical) axis.
infinite Boolean If true, the coordinate space will be unbounded (infinite in both axes)

Defined CRSs

CRS Description
BM.CRS.Baidu Rarely used by some commercial tile providers. Uses Baidu projection.
BM.CRS.Earth Serves as the base for CRS that are global such that they cover the earth. Can only be used as the base for other CRS and cannot be used directly, since it does not have a code, projection or transformation. distance() returns meters.
BM.CRS.EPSG3395 Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.
BM.CRS.EPSG3857 The most common CRS for online maps, used by almost all free and commercial tile providers. Uses Spherical Mercator projection. Set in by default in Map's crs option.
BM.CRS.EPSG4326 A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. Bigemap 1.0.x complies with the TMS coordinate scheme for EPSG:4326, which is a breaking change from 0.7.x behaviour. If you are using a TileLayer with this CRS, ensure that there are two 256x256 pixel tiles covering the whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90), or (-180,-90) for TileLayers with the tms option set.
BM.CRS.Base Object that defines coordinate reference systems for projecting geographical points into pixel (screen) coordinates and back (and to coordinates in other units for WMS services). See spatial reference system. Bigemap defines the most usual CRSs by default. If you want to use a CRS not defined by default, take a look at the Proj4Leaflet plugin.
BM.CRS.Simple A simple CRS that maps longitude and latitude into x and y directly. May be used for maps of flat surfaces (e.g. game maps). Note that the y axis should still be inverted (going from bottom to top). distance() returns simple euclidean distance.

Renderer

Base class for vector renderer implementations (SVG, Canvas). Handles the DOM container of the renderer, its bounds, and its zoom animation. A Renderer works as an implicit layer group for all Paths - the renderer itself can be added or removed to the map. All paths use a renderer, which can be implicit (the map will decide the type of renderer and use it automatically) or explicit (using the renderer option of the path). Do not use this class directly, use SVG and Canvas instead.

Options

Option Type Default Description
padding Number 0.1 How much to extend the clip area around the map view (relative to its size) e.g. 0.1 would be 10% of map view in each direction
Option Type Default Description
pane String 'overlayPane' By default the layer will be added to the map's overlay pane. Overriding this option will cause the layer to be placed on another pane by default.
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
update Event Fired when the renderer updates its bounds, center and zoom, for example when its map has moved
Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Event objects

Whenever a class inheriting from Evented fires an event, a listener function will be called with an event argument, which is a plain object containing information about the event. For example:

map.on('click', function(ev) {
    alert(ev.latlng); // ev is an event object (MouseEvent in this case)
});

The information available depends on the event type:

Event

The base event object. All other event objects contain these properties too.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

KeyboardEvent

Property Type Description
originalEvent DOMEvent The original DOM KeyboardEvent that triggered this Bigemap event.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

MouseEvent

Property Type Description
latlng LatLng The geographical point where the mouse event occured.
layerPoint Point Pixel coordinates of the point where the mouse event occured relative to the map layer.
containerPoint Point Pixel coordinates of the point where the mouse event occured relative to the map сontainer.
originalEvent DOMEvent The original DOM MouseEvent or DOM TouchEvent that triggered this Bigemap event.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

LocationEvent

Property Type Description
latlng LatLng Detected geographical location of the user.
bounds LatLngBounds Geographical bounds of the area user is located in (with respect to the accuracy of location).
accuracy Number Accuracy of location in meters.
altitude Number Height of the position above the WGS84 ellipsoid in meters.
altitudeAccuracy Number Accuracy of altitude in meters.
heading Number The direction of travel in degrees counting clockwise from true North.
speed Number Current velocity in meters per second.
timestamp Number The time when the position was acquired.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

ErrorEvent

Property Type Description
message String Error message.
code Number Error code (if applicable).
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

LayerEvent

Property Type Description
layer Layer The layer that was added or removed.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

LayersControlEvent

Property Type Description
layer Layer The layer that was added or removed.
name String The name of the layer that was added or removed.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

TileEvent

Property Type Description
tile HTMLElement The tile element (image).
coords Point Point object with the tile's x, y, and z (zoom level) coordinates.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

TileErrorEvent

Property Type Description
tile HTMLElement The tile element (image).
coords Point Point object with the tile's x, y, and z (zoom level) coordinates.
error * Error passed to the tile's done() callback.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

ResizeEvent

Property Type Description
oldSize Point The old size before resize event.
newSize Point The new size after the resize event.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

GeoJSONEvent

Property Type Description
layer Layer The layer for the GeoJSON feature that is being added to the map.
properties Object GeoJSON properties of the feature.
geometryType String GeoJSON geometry type of the feature.
id String GeoJSON ID of the feature (if present).
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

PopupEvent

Property Type Description
popup Popup The popup that was opened or closed.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

TooltipEvent

Property Type Description
tooltip Tooltip The tooltip that was opened or closed.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

DragEndEvent

Property Type Description
distance Number The distance in pixels the draggable element was moved by.
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

ZoomAnimEvent

Property Type Description
center LatLng The current center of the map
zoom Number The current zoom level of the map
noUpdate Boolean Whether layers should update their contents due to this event
Property Type Description
type String The event type (e.g. 'click').
target Object The object that fired the event.

DivOverlay

Base model for BM.Popup and BM.Tooltip. Inherit from it for custom popup like plugins.

Options

Option Type Default Description
offset Point Point(0, 7) The offset of the popup position. Useful to control the anchor of the popup when opening it on some overlays.
className String '' A custom CSS class name to assign to the popup.
pane String 'popupPane' Map pane where the popup will be added.
Option Type Default Description
attribution String null String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox".

Events

Event Data Description
add Event Fired after the layer is added to a map
remove Event Fired after the layer is removed from a map
Event Data Description
popupopen PopupEvent 打开绑定到此图层的弹出窗口时触发
popupclose PopupEvent 绑定到此图层的弹出窗口关闭时触发
Event Data Description
tooltipopen TooltipEvent Fired when a tooltip bound to this layer is opened.
tooltipclose TooltipEvent Fired when a tooltip bound to this layer is closed.

Methods

Method Returns Description
addTo(<Map|LayerGroup> map) this

Adds the layer to the given map or layer group.

remove() this

Removes the layer from the map it is currently active on.

removeFrom(<Map> map) this

Removes the layer from the given map

getPane(<String> name?) HTMLElement

Returns the HTMLElement representing the named pane on the map. If name is omitted, returns the pane for this layer.

getAttribution() String

Used by the attribution control, returns the attribution option.

Method Returns Description
bindPopup(<String|HTMLElement|Function|Popup> content, <Popup options> options?) this

使用传递content将弹出窗口绑定到图层,并设置必要的事件侦听器。如果参数为Function,它将接收图层作为第一个参数,并应返回一个StringHTMLElement

unbindPopup() this

删除以前绑定的弹出窗口bindPopup

openPopup(<LatLng> latlng?) this

Opens the bound popup at the specified latlng or at the default popup anchor if no latlng is passed.

closePopup() this

如果已打开,则关闭绑定到此图层的弹出窗口。

togglePopup() this

打开或关闭绑定到此图层的弹出窗口,具体取决于其当前状态。

isPopupOpen() boolean

返回true如果绑定到该层的弹出当前处于打开状态。

setPopupContent(<String|HTMLElement|Popup> content) this

设置绑定到此图层的弹出窗口的内容。

getPopup() Popup

返回绑定到此图层的弹出窗口。

Method Returns Description
bindTooltip(<String|HTMLElement|Function|Tooltip> content, <Tooltip options> options?) this

Binds a tooltip to the layer with the passed content and sets up the necessary event listeners. If a Function is passed it will receive the layer as the first argument and should return a String or HTMLElement.

unbindTooltip() this

Removes the tooltip previously bound with bindTooltip.

openTooltip(<LatLng> latlng?) this

Opens the bound tooltip at the specified latlng or at the default tooltip anchor if no latlng is passed.

closeTooltip() this

Closes the tooltip bound to this layer if it is open.

toggleTooltip() this

Opens or closes the tooltip bound to this layer depending on its current state.

isTooltipOpen() boolean

Returns true if the tooltip bound to this layer is currently open.

setTooltipContent(<String|HTMLElement|Tooltip> content) this

Sets the content of the tooltip bound to this layer.

getTooltip() Tooltip

Returns the tooltip bound to this layer.

Method Returns Description
on(<String> type, <Function> fn, <Object> context?) this

Adds a listener function (fn) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. 'click dblclick').

on(<Object> eventMap) this

Adds a set of type/listener pairs, e.g. {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?) this

Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to on, you must pass the same context to off in order to remove the listener.

off(<Object> eventMap) this

Removes a set of type/listener pairs.

off() this

Removes all listeners to all events on the object.

fire(<String> type, <Object> data?, <Boolean> propagate?) this

Fires an event of the specified type. You can optionally provide an data object — the first argument of the listener function will contain its properties. The event can optionally be propagated to event parents.

listens(<String> type) Boolean

Returns true if a particular event type has any listeners attached to it.

once() this

Behaves as on(…), except the listener will only get fired once and then removed.

addEventParent(<Evented> obj) this

Adds an event parent - an Evented that will receive propagated events

removeEventParent(<Evented> obj) this

Removes an event parent, so it will stop receiving propagated events

addEventListener() this

Alias to on(…)

removeEventListener() this

Alias to off(…)

clearAllEventListeners() this

Alias to off()

addOneTimeEventListener() this

Alias to once(…)

fireEvent() this

Alias to fire(…)

hasEventListeners() Boolean

Alias to listens(…)

Global Switches

Global switches are created for rare cases and generally make Bigemap to not detect a particular browser feature even if it's there. You need to set the switch as a global variable to true before including Bigemap on the page, like this:

<script>BM_NO_TOUCH = true;</script>
<script src="bigemap.js"></script>
Switch Description
BM_NO_TOUCH Forces Bigemap to not use touch events even if it detects them.
BM_DISABLE_3D Forces Bigemap to not use hardware-accelerated CSS 3D transforms for positioning (which may cause glitches in some rare environments) even if they're supported.

noConflict

This method restores the BM global variable to the original value it had before Bigemap inclusion, and returns the real Bigemap namespace so you can put it elsewhere, like this:

<script src='libs/l.js'>
<!-- BM points to some other library -->
<script src='bigemap.js'>
<!-- you include Bigemap, it replaces the BM variable to Bigemap namespace -->
<script>
var Bigemap = BM.noConflict();
// now BM points to that other library again, and you can use Bigemap.Map etc.
</script>

version

A constant that represents the Bigemap version in use.

BM.version; // contains "1.0.0" (or whatever version is currently in use)