Map
概述
API中的核心类,用来在网页中创建一个地图,封装了地图显示、交互等操作的方法
用法示例
// 给定中心与缩放比,在id为map的div元素上初始化地图
var map = FMap.map('map', {
center: [51.505, -0.09],
zoom: 13
});
创建(Creation)
创建:
创建 | 描述 |
---|---|
FMap.map (<HTMLElement|String>id,<Map options>options?) | 构造一个地图对象,参数id中传入地图容器DIV的ID值,opts地图初始化参数对象,参数详情参看MapOptions列表 |
选项(Options)
地图状态选项(Map State Options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
center | LatLng | null | 初始地图的地理中心 |
zoom | Number | null | 最初的地图缩放 |
layers | ILayer[] | null | 最初将被添加到地图上的图层 |
minZoom | Number | null | 最低地图的缩放级别,覆盖任何minZoom映射层 |
maxZoom | Number | null | 最大的地图的缩放级别,这将覆盖任何maxZoom映射层 |
maxBounds | LatLngBounds | null | 当此选项设置,限制视图映射到给定的地理界限,跳跃的用户当他试图锅以外的观点,动态设置限制,使用setMaxBounds方法 |
crs | CRS | FMap.CRS.EPSG3857 | 坐标参考系统,在不清楚它作用的时候不要尝试修改 |
交互选项(Interaction Options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
dragging | Boolean | TRUE | 地图是否被拖拽鼠标/触碰 |
touchZoom | Boolean | TRUE | 是否可以放大地图touch-dragging两根手指 |
scrollWheelZoom | Boolean | TRUE | 地图是否可以使用鼠标滚轮放大,如果通过'center’,将缩放视图的中心,无论鼠标在哪里 |
doubleClickZoom | Boolean | TRUE | 地图是否可以通过双击放大,放大了双击同时转变,如果通过“中心”,双击缩放将缩放视图的中心,无论鼠标在哪里 |
boxZoom | Boolean | TRUE | 是否可以放大地图指定矩形区域通过拖动鼠标而紧迫的转变 |
tap | Boolean | TRUE | 强制使移动设备支持快速点击(正在修复iOS/Android设备上的200ms点击延迟bug)与持续按压 (类似contextmenu事件的触发) |
tapTolerance | Number | 15 | 移动端有效touch事件的用户手指最大的像素位移量 |
trackResize | Boolean | TRUE | 地图自动处理浏览器窗口大小是否更新本身 |
worldCopyJump | Boolean | FALSE | 开启这个选项,平移地图时实现无缝跳转,所有overlays都是可见的 |
closePopupOnClick | Boolean | TRUE | 将其设置为假如果你不想当用户点击地图弹出窗口关闭 |
bounceAtZoomLimits | Boolean | TRUE | 默认地图缩放超出最大/最小值时不反弹 |
键盘导航选项(Keyboard Navigation Options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
keyboard | Boolean | TRUE | 允许用户使用键盘方向键导航或+/-键变焦 |
keyboardPanOffset | Number | 80 | 设置每次点击方向键移动的像素值 |
keyboardZoomOffset | Number | 1 | 设置每次点击+/-键变焦的数值 |
平移惯性选项(Panning Inertia Options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
inertia | Boolean | TRUE | 如果启用,平移地图将有一个惯性效应的地图构建势头,继续朝着同一个方向拖一段时间,移动端体验更好 |
inertiaDeceleration | Number | 3000 | 惯性运动的速度放缓,在像素/秒2 |
inertiaMaxSpeed | Number | 1500 | 惯性运动的最大速度,在像素/秒 |
inertiaThreshold | Number | depends | 停止运动与释放鼠标或触摸之间的毫秒数,防止惯性运动,移动端默认值32,其余默认14 |
控制选项(Control options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
zoomControl | Boolean | TRUE | zoom控件是否添加到地图上 |
attributionControl | Boolean | TRUE | attribution控件是否添加到地图上 |
动画选项(Animation options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
fadeAnimation | Boolean | depends | 是否启用了瓦片渐变动画,默认情况下在所有支持CSS3过渡效果的浏览器中启用,除了Android设备 |
zoomAnimation | Boolean | depends | 是否启用了瓦片缩放动画,默认情况下在所有支持CSS3过渡效果的浏览器中启用,除了Android设备 |
zoomAnimationThreshold | Number | 4 | 如果变焦差超过此值将无法运行动画缩放 |
markerZoomAnimation | Boolean | depends | 标记缩放时是否启用缩放动画,如果禁用,动画这部分将会消失,默认情况下在所有支持CSS3过渡效果的浏览器中启用,除了Android设备 |
定位选项(Locate options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
watch | Boolean | FALSE | (监听):如果该值为真,则开始利用W3C的watchPosition方法监听位置变化情况(而不是指监听一次),你可以通过map.stoplocate()方法来停止监听 |
setView | Boolean | FALSE | (设置视图):如果该值为真,则通过自动将地图视图定位到用户一定精度范围内的位置,如果地理定位失败则显示全部地图 |
maxZoom | Number | Infinity | (最大级别):在使用setView选项时视图缩放的最大级别 |
timeout | Number | 10000 | (超时):在触发locationerror事件之前等待地理定位的毫秒为单位的时间 |
maximumAge | Number | 0 | (最大生命周期):位置监听的最大生命周期,如果比最后定位回复后毫秒用时短,则locate返回一个缓存位置 |
enableHighAccuracy | Boolean | FALSE | 启用高精度,详见W3C规范 |
缩放/平移选项(Zoom/pan options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
reset | Boolean | FALSE | 如果为true,地图视图将被完全复位(无任何动画) |
pan | pan options | - | 设置平移选项(没有变焦改变) |
zoom | zoom options | - | 设置选项变焦选项 |
animate | Boolean | - | 缩放和平移时是否有短暂的动画(详见下文) |
平移选项(Pan options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
animate | Boolean | - | true,如果可能平移时一直有动画,false,无论如何平移都没有动画(除非使用panBy方法) |
duration | Number | 0.25 | 平移时动画的时间 |
easeLinearity | Number | 0.25 | 平移时动画的曲率, 1.0表示线性动画,数值越小曲率越大 |
noMoveStart | Boolean | FALSE | 如果为true,平移时不会触发movestart事件(用于内部平移惯性) |
缩放选项(Zoom options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
animate | Boolean | - | 如果为true,当前视图缩放时有动画,动画将持续到缩放结束,如果为false视图将直接重置 |
适应边界选项(fitBounds options):
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
paddingTopLeft | Point | [0,0] | 设置地图容器左上角的padding值,当已经设置fit bounds时此选项勿设置(可用作设置侧边栏,防止覆盖缩放控件) |
paddingBottomRight | Point | [0,0] | 与上述相同,地图右下角 |
padding | Point | [0,0] | 设置左上角和右下角的padding值相等 |
maxZoom | Number | null | 可使用的最大变焦 |
事件(Events)
使用地图核心类中Event提供的方法与属性:
事件 | 类型(Data) | 描述 |
---|---|---|
click | MouseEvent | (单击):用户按下鼠标按键时触发 |
dblclick | MouseEvent | (双击):用户按下鼠标按键时触发 |
mousedown | MouseEvent | (鼠标按下):鼠标进入地图时触发 |
mouseup | MouseEvent | (鼠标抬起):用户按下鼠标按键时触发 |
mouseover | MouseEvent | (鼠标经过):鼠标进入地图时触发 |
mouseout | MouseEvent | (鼠标移出):鼠标离开地图时触发 |
mousemove | MouseEvent | (鼠标移动):鼠标在地图上移动时触发 |
contextmenu | MouseEvent | (情景菜单):当用户在地图上按下鼠标右键时触发,如果有监听器在监听这个时间,则浏览器默认的情景菜单被禁用 |
focus | Event | (聚焦):当用户进行聚焦操作时触发 |
blur | Event | (失去焦点):当失去焦点时触发 |
preclick | MouseEvent | 鼠标点击地图之前触发 |
load | Event | (载入):当地图初始化时触发(当地图的中心点和缩放初次设置时) |
unload | Event | 当地图用remove方法移除的时候触发 |
viewreset | Event | (视图重置):当地图需要重绘内容时触发(通常在地图缩放和载入时发生)这对于创建用户自定义的叠置图层非常有用 |
movestart | Event | (移动开始):地图视图开始改变时触发(比如用户开始拖动地图) |
move | Event | (移动):所有的地图视图移动时触 |
moveend | Event | (移动结束):当地图视图结束改变时触发(比如用户停止拖动地图) |
dragstart | Event | (拖动开始):用户开始拖动地图时触发 |
drag | Event | (拖动):用户拖动地图时不断重复地触发 |
dragend | DragEndEvent | (拖动结束):用户停止拖动时触发 |
zoomstart | Event | (缩放开始):当地图缩放即将发生时触发(比如缩放动作开始前) |
zoomend | Event | (缩放结束):当地图缩放时触发 |
zoomlevelschange | Event | 由于添加或移除图层导致缩放级别改变的时候触发 |
resize | ResizeEvent | 当地图调整大小时触发 |
autopanstart | Event | (自动平移开始):打开弹出窗口时地图开始自动平移时触发 |
layeradd | LayerEvent | (添加图层):当一个新的图层添加到地图上时触发 |
layerremove | LayerEvent | (图层移除):当一些图层从地图上移除时触发 |
baselayerchange | LayerEvent | (基础图层改变):当通过图层控制台改变基础图层时触发 |
overlayadd | LayerEvent | 当一个overlay通过layer控件被选定的时候触发 |
overlayremove | LayerEvent | 当一个overlay通过layer控件被取消选定的时候触发 |
locationfound | LocationEvent | (位置查找):当地理寻址成功时触发(使用locate方法) |
locationerror | ErrorEvent | (定位错误):当地理寻址错误时触发(使用locate方法) |
popupopen | PopupEvent | (打开弹出框):当弹出框打开时触发(使用openPopup方法) |
popupclose | PopupEvent | (关闭弹出框):当弹出框关闭时触发(使用closePopup方法) |
4、方法(Methods)
改变地图状态的方法(Methods for Modifying Map State):
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
setView() | <LatLng> center, <Number> zoom?, <zoom/pan options> options? | this | (设定视图):设定地图(设定其地理中心和缩放),如果forceReset设置的是true,即使移动和缩放动作是合理的,地图也会重载,其默认值是fault |
setZoom() | <Number> zoom, <zoom options> options? | this | (设定缩放):设定地图的缩放 |
zoomIn() | <Number> delta?, <zoom options> options? | this | (放大):通过delta变量放大地图的级别,1是delta的默认值 |
zoomOut() | <Number> delta?, <zoom options> options? | this | (缩小):通过delta变量缩小地图的级别,1是delta的默认值 |
setZoomAround() | <LatLng> latlng, <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 | (平移至中心点):将地图平移到给定的中心,如果新的中心点在屏幕内与现有的中心点不同则产生平移动作 |
panInsideBounds() | <LatLngBounds> bounds, <pan options> options? | this | (平移到某边界内):平移地图到坐落于给定边界最接近的视图内 |
panBy() | <Point> point, <pan options> options? | this | (通过像素点平移):通过给定的像素值对地图进行平移 |
invalidateSize() | <Boolean> animate | this | (无效的大小):检查地图容器的大小是否改变并更新地图,如果是这样的话,在动态改变地图大小后调用,如果animate是true的话,对地图进行更新 |
invalidateSize() | <zoom/pan options> options | this | 检查地图容器元素的尺寸是否发生改变并且地图是否更新,在用户已经动态改变地图大小的时候,这个事件响应传入相应的option,默认平移动画开启,如果options.pan为false,平移时动画不会发生,如果options.debounceMoveend为true,将会延迟移动事件,甚至该事件不会发生 |
setMaxBounds() | <LatLngBounds> bounds | this | (设置最大边界):将地图限定在给定的边界内 |
locate() | <Locate options> options? | this | 综合定位功能,调用方法:map.locate({setView: true}); |
stopLocate() | 无 | this | (停止定位):开始map.locate方法时停止预先检测位置信息 |
remove | 无 | this | 销毁地图,并且清除所有相关的事件监听器 |
获取地图状态的方法(Methods for Getting Map State):
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
getCenter() | 无 | LatLng | (获取地图中心):返回地图视图的地理中心 |
getZoom() | 无 | Number | (获取缩放级别):获取地图视图现在所处的缩放级 |
getMinZoom() | 无 | Number | (获取最小缩放级别):返回地图最小的缩放级别 |
getMaxZoom() | 无 | Number | (获取最大缩放级别):返回地图最大的缩放级别 |
getBounds() | 无 | LatLngBounds | (获取边界):返回地图视图的经纬度边界 |
getBoundsZoom() | 无 | Number | (获取边界缩放级别):返回适应整个地图视图边界的最大缩放级别,如果inside的设置时true,这个方法返回适应整个地图视图边界的最小缩放级别 |
getSize() | 无 | Point | (获取大小):返回现有地图容器的大小 |
getPixelBounds() | <LatLngBounds> bounds, <Boolean> inside? | Bounds | (获取像素边界):返回地图视图在像素投影坐标系下的边界,(很多时候对用户自定义图层和叠加很有用) |
getPixelOrigin() | 无 | Point | (获取像素原点):返回地图图层像素投影坐标系下的左上角的点(很多时候对用户自定义图层和叠加很有用) |
图层与控件的方法(Methods for Layers and Controls):
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
addLayer() | <ILayer> layer | this | (添加图层):将图层添加到地图上,如果insertAtTheBottom的选项为true,图层添加时在所以图层之下(在切换基底图时比较有用) |
removeLayer() | <ILayer> layer | this | (移除图层):将图层在地图上移除 |
hasLayer() | <ILayer> layer | Boolean | (是否有此图层):如果添加的图层是当前图层则返回true |
eachLayer() | <Function> fn,<Object> context? | this | 迭代地图的层,任选指定迭代函数的上下文 map.eachLayer(function (layer) { layer.bindPopup('Hello'); }); |
openPopup() | <Popup> popup | this | 打开指定的弹出框并且关闭之前打开的(确保在同一时间只有一个弹出框打开) |
openPopup() | <String> html |<HTMLElement> el, <LatLng> latlng,<Popup options> options? | this | 创建具有指定选项的弹出框,并在地图上给定的点打开它 |
closePopup() | <Popup> popup? | this | (关闭弹出框):关闭openPopup打开的弹出框 |
addControl() | <IControl> control | this | (添加控制):在地图上添加控制选 |
removeControl() | <IControl> control | this | (移除控制):在地图上移除控制选项 |
转换方法(Conversion Methods):
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
latLngToLayerPoint() | <LatLng> latlng | Point | (将经纬度添转变为图层上的点):返回地图图层上与地理坐标相一致的点(在地图上进行位置叠加时比较有用) |
layerPointToLatLng() | <Point> point | LatLng | (将图层上的点转换为经纬度点):返回给定地图上点的地理坐标系 |
containerPointToLayerPoint() | <Point> point | Point | (容器点到图层点):将于地图容器相关的点转换为地图图层相关的点 |
layerPointToContainerPoint() | <Point> point | Point | (图层点到容器点):将地图图层相关的点转换为地图容器相关的点 |
latLngToContainerPoint() | <LatLng> latlng | Point | (经纬度点到容器点):返回与给定地理坐标系相符的地图容器的点 |
containerPointToLatLng() | <Point> point | LatLng | (容器点转换为经纬度点):返回给定地理容器点的地理坐标 |
project() | <LatLng> latlng,<Number> zoom? | Point | 将给定的地理坐标按缩放级别转化为绝对像素坐标(缩放级别是当前默认级别) |
unproject() | <Point> point,<Number> zoom? | LatLng | 将给定的绝对像素坐标按缩放级别转化为地理坐标(缩放级别是当前默认级别) |
mouseEventToContainerPoint() | <MouseEvent> event | Point | (鼠标点击事件到地图容器点):返回鼠标点击事件对象的像素坐标(与地图左上角相关) |
mouseEventToLayerPoint() | <MouseEvent> event | Point | (鼠标点击事件到地图容器点):返回鼠标点击事件对象的像素坐标(与地图图层相关) |
mouseEventToLatLng() | <MouseEvent> event | LatLng | (鼠标点击事件到经纬度点):返回鼠标点击事件对象的地理坐标 |
其他方法(Other Methods):
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
getContainer() | 无 | HTMLElement | (获取容器):返回地图容器对象 |
getPanes() | 无 | MapPanes | (获取地图边框):返回不同地图对象的边框(叠加渲染) |
whenReady() | <Function> fn,<Object> context? | this | 当地图初始化完成,运行传入的回调函数,上下文环境为可选参数 |
5、属性
属性(Properties):
地图属性包括交互处理,使您可以在运行时控制的交互行为,启用或禁用某些功能如拖动或触摸变焦(详见IHandler方法),示例:
map.doubleClickZoom.disable();
用户也可以通过属性访问默认的地图控件,如attribution控件:
map.attributionControl.addAttribution(""Earthquake data © GeoNames"");
属性 | 类型(Data) | 描述 |
---|---|---|
dragging | IHandler | 地图拖动处理(通过鼠标和触摸) |
touchZoom | IHandler | 触摸缩放 |
doubleClickZoom | IHandler | 双击缩放 |
scrollWheelZoom | IHandler | 鼠标滚轮缩放 |
boxZoom | IHandler | 按住shift缩放 |
keyboard | IHandler | 键盘导航 |
tap | IHandler | 强制手机触摸(快速点击和触摸保持) |
zoomControl | Control.Zoom | 缩放控件 |
attributionControl | Control.Attribution | Attribution控件 |