因为最近要做P5X的互动地图,所以接触一下这个API

地图

API 的核心类 — 它用来在页面中创建并操作地图。

使用示例

1
2
3
4
5
// 使用 id 为 map 的 div 容器初始化地图,同时指定地图的中心点和缩放级别
var map = L.map(‘map’, {
center: [51.505, -0.09],
zoom: 13
});

创建对象

工厂函数 说明
L.map(<String> id, <Map options> options?) 在一个指定 iddiv 元素中初始化地图并设置相关参数。
L.map(<HTMLElement> el, <Map options> options?) 在一个 div 实例中初始化地图并设置相关参数。

Options 选项

选项 类型 默认值 说明
preferCanvas Boolean false 是否使用 Canvas 来渲染 Path(路径).默认情况下,所有 Path 都是使用 SVG 进行渲染。

控件选项

选项 类型 默认值 说明
attributionControl Boolean true 默认情况下,是否将 attribution 版权控件添加到地图中。
zoomControl Boolean true 默认情况下,是否将 zoom 缩放控件添加到地图中。

交互选项

选项 类型 默认值 说明
closePopupOnClick Boolean true 如果你不希望用户点击地图时 popups(弹出窗口)自动关闭,则可以将其设置为 false
zoomSnap Number 1 强制让地图的缩放级别始终为这个值的倍数,特别是在 fitBounds()pinch-zoom 后。默认情况下,缩放级别将是其最接近的整数; 较低的值(例如 0.5 or 0.1)允许更大的颗粒度。数值 0 意味着缩放级别将不会被 fitBoundspinch-zoom
zoomDelta Number 1 控件在进行 zoomIn()zoomOut() 以及按 + - 键或者使用 zoom 进行缩放之后,地图缩放级别改变的值。小于 1 的值(例如 0.5)允许更大的颗粒度。
trackResize Boolean true 地图是否会自动根据浏览器窗口的大小来更新自己。
boxZoom Boolean true 是否可以在按住 shift 键的同时拖动鼠标将地图缩放到指定的矩形区域。
doubleClickZoom Boolean|String true 地图是否可以通过双击来放大,以及在按住 shift 的同时双击来缩小。如果设置为 ‘center’,不管鼠标在哪里,双击缩放都将缩放到视图的中心。
dragging Boolean true 地图是否可以通过 mouse/touch 进行拖动。

地图状态选项

选项 类型 默认值 说明
crs CRS L.CRS.EPSG3857 该地图使用的坐标系。如果你不确定坐标系这是什么意思,请不要更改它。
center LatLng undefined 地图初始化时的中心点位置
zoom Number undefined 地图初始化时的缩放等级
minZoom Number 地图的最小缩放级别。 如果未指定,并且地图中至少有一个 GridLayerTileLayer,则将使用其最低的 minZoom 选项。
maxZoom Number 地图的最大缩放级别。 如果未指定,并且地图中至少有一个 GridLayerTileLayer,则将使用其最大的 maxZoom 选项。
layers Layer[] [] 默认添加到地图上的图层组
maxBounds LatLngBounds null 当这个选项被设置后,地图将被限制在指定的地理边界内, 当用户平移将地图拖动到视图以外的范围时会出现弹回的效果, 并且也不允许缩小视图到指定范围以外的区域(这取决于地图的尺寸). 要动态设置此限制,请使用 setMaxBounds 方法。
renderer Renderer 在地图上绘制矢量图层的默认方法,默认为 L.SVGL.Canvas, 这取决于浏览器是否支持。

动画选项

选项 类型 默认值 说明
zoomAnimation Boolean true 是否启用地图缩放动画。默认情况下,它在所有支持 CSS3 Transitions 的浏览器中都是启用的,Android 除外。
zoomAnimationThreshold Number 4 如果缩放差异超过此值,则不会为缩放设置动画。
fadeAnimation Boolean true 是否启用淡出淡出动画。默认情况下,它在所有支持 CSS3 Transitions 的浏览器中都是启用的,Android 除外。
markerZoomAnimation Boolean true Marker 标记是否使用缩放动画进行缩放。默认情况下,它在所有支持 CSS3 Transitions 的浏览器中都是启用的,Android 除外。
transform3DLimit Number 2^23 定义了 CSS 转换的最大尺寸。默认值不应该被改变,除非网页浏览器在做了一个大的 panBy 后将层定位在错误的地方。

Panning Inertia 选项

选项 类型 默认值 说明
inertia Boolean 如果启用,地图的平移会有一种惯性效应,即地图在拖动时形成动力,并在一段时间内继续向同一方向移动。在触摸设备上感觉特别好。除非在旧的 Android 设备上运行,否则默认情况下是启用的。
inertiaDeceleration Number 3000 惯性运动减速的速度, 以像素/秒²单位。
inertiaMaxSpeed Number Infinity 惯性运动的最大速度,以像素/秒为单位。
easeLinearity Number 0.2
worldCopyJump Boolean false 启用该选项后,当你平移到世界的另一个 “copy” 时,地图会跟踪并无缝跳转到原来的副本,这样所有的覆盖物如 markers(标记)和 vector layers(矢量图层)都仍然可见。
maxBoundsViscosity Number 0.0 如果设置了 maxBounds,这个选项将控制拖动地图时边界的稳固程度。默认值为 0.0,允许用户以正常速度在界外拖动,更高的值会减慢地图在界外的拖动速度,而 1.0 使界外完全稳固,防止用户在界外拖动。

按键导航选项

选项 类型 默认值 说明
keyboard Boolean true 地图是否获得焦点,并且允许用户通过键盘和 +/- 来进行浏览地图。
keyboardPanDelta Number 80 按下方向键时,平移的像素数量。

鼠标选项

选项 类型 默认值 说明
scrollWheelZoom Boolean|String true 地图是否允许通过使用鼠标滚轮进行缩放。如果通过’center’,不管鼠标在哪里,都将会放大到视图的中心。
wheelDebounceTime Number 40 限制滚轮的触发速度(以毫秒为单位)。默认情况下,用户通过滚轮缩放的次数不能超过每 40 毫秒一次。
wheelPxPerZoomLevel Number 60 多少滚动像素(由 L.DomEvent.getWheelDelta 报告)意味着一个完整缩放级别的更改。 较小的值将使滚轮变焦更快(反之亦然)

触摸交互选项

选项 类型 默认值 说明
tapHold Boolean 是否启用 mobile hacks 以支持 taps(在 iOS / Android上 修复 200ms 点击延迟)和 touch(触发 contextmenu 事件)。
tapTolerance Number 15 用户在触摸时,移动手指的像素数超过此值时被认为是有效的 tap
touchZoom Boolean|String * 地图是否允许通过两根手指的触摸拖动进行缩放。如果通过 ‘center’,就会放大到视图的中心,而不管 touch 事件(手指)在哪里。除了老式的 Android 系统外,对具有 touch-capable 功能的网络浏览器来说是启用的。
bounceAtZoomLimits Boolean true 如果您不希望在地图缩放超过最小/最大缩放范围时反弹,请将其设置为 false

事件

图层事件

事件名 数据 说明
baselayerchange LayersControlEvent 通过图层控件更改基本图层时触发。
overlayadd LayersControlEvent 通过图层控件选择叠加图层时触发。
overlayremove LayersControlEvent 通过图层控件取消选择叠加图层时触发。
layeradd LayerEvent 将新图层添加到地图时触发。
layerremove LayerEvent 从地图上删除某些图层时触发
地图状态变更事件
事件名 数据 说明
zoomlevelschange Event 当地图上的缩放级别数因添加或移除图层而更改时触发。
resize ResizeEvent 调整地图大小时触发。
unload Event 当使用 remove 方法销毁地图时触发。
viewreset Event 当地图需要重绘其内容时触发(通常发生在地图缩放或加载时)。 对于创建 custom overlays 非常有用。
load Event 地图初始化时触发(首次设置其中心和缩放比例时)。
zoomstart Event 地图缩放即将更改时(例如在缩放动画之前)触发。
movestart Event 当地图视图开始更改时触发(例如,用户开始拖动地图)。
zoom Event 在缩放级别的任何更改(包括缩放和飞行动画)期间反复触发。
move Event 在地图的任何移动过程中反复触发,包括平移和飞行动画。
zoomend Event 在任何动画执行完毕地图更新后都会触发。
moveend Event 地图中心停止更改时触发(例如,用户停止拖动地图)。
Popup 弹窗事件
事件名 数据 说明
popupopen PopupEvent 在地图上打开 popup(弹出窗口)时触发。
popupclose PopupEvent 当地图中的 popup(弹出窗口)关闭时触发。
autopanstart Event 打开 popup(弹出窗口)时地图开始自动平移时触发。
Tooltip 工具提示事件
事件名 数据 说明
tooltipopen TooltipEvent 在地图上打开 tooltip(工具提示)时触发。
tooltipclose TooltipEvent 地图中的 tooltip(工具提示)关闭时触发。
Location 定位相关事件
事件名 数据 说明
locationerror ErrorEvent 当获取地理位置(使用 locate 方法)失败时触发。
locationfound LocationEvent 当获取地理位置(使用 locate 方法)成功时触发。
交互事件
事件名 数据 说明
click MouseEvent 当用户点击地图时触发。
dblclick MouseEvent 当用户双击地图时触发。
mousedown MouseEvent 当用户在地图上按下鼠标按钮时触发。
mouseup MouseEvent 当用户释放地图上的鼠标按钮时触发。
mouseover MouseEvent 当鼠标进入地图时触发。
mouseout MouseEvent 当鼠标离开地图时触发。
mousemove MouseEvent 当鼠标在地图上移动时触发。
contextmenu MouseEvent 当用户在地图上按下鼠标右键时触发,从而阻止默认浏览器上下文菜单显示,如果此事件上有侦听器。 当用户长按时,也会在移动设备上触发。
keypress KeyboardEvent 当用户在聚焦地图时按下键盘上输入字符时触发。
keydown KeyboardEvent 当地图聚焦时用户按下键盘上的键时触发。 与keypress事件不同,对于产生字符值的键和不产生字符值的键都会触发keydown事件。
keyup KeyboardEvent 当用户在地图被聚焦时从键盘上释放一个按键时触发。
preclick MouseEvent 在鼠标点击地图之前触发(当你希望在点击事件触发之前执行某些操作时可以使用)。
其它事件
事件名 数据 说明
zoomanim ZoomAnimEvent 每个缩放动画至少触发一次。 对于连续缩放(如捏合缩放),在缩放过程中每帧触发一次。

(To Be Continued.)

Ref

原文