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 &copy; GeoNames"");
属性 类型(Data) 描述
dragging IHandler 地图拖动处理(通过鼠标和触摸)
touchZoom IHandler 触摸缩放
doubleClickZoom IHandler 双击缩放
scrollWheelZoom IHandler 鼠标滚轮缩放
boxZoom IHandler 按住shift缩放
keyboard IHandler 键盘导航
tap IHandler 强制手机触摸(快速点击和触摸保持)
zoomControl Control.Zoom 缩放控件
attributionControl Control.Attribution Attribution控件

results matching ""

    No results matching ""