Map
# 示例
```javascript
// 在 map 层初始化
var map = L.map('map', {
center: [51.505, -0.09],
zoom: 13
});
```
> 在线Demo:[http://j srun.net/EG6Kp](http://jsrun.net/EG6Kp)
## 构造函数
|方法|描述|
|:----|:----|
|W.map(< String > id, < Map options> options?)|给定div的id和地图属性选项来创建一个地图对象|
|W.map(< HTMLElement > el), < Map options> options?)|通过一个html element对象和地图属性选项来创建地图对象|
### 构造选项
|选项名|类型|默认值|描述|
|:----|:----|:----|:----|
|center|[LatLng](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLng.html)|undefined|初始地图中心点|
|zoom|Number|undefined|初始地图缩放级别|
|attributionControl|Boolean|true|指定是否将属性控件添加到地图上。|
|zoomControl|Boolean|true|指定是否将级别缩放控件添加到地图上。|
|closePopupOnClick|Boolean|true|当设置为true的时候,鼠标点击地图(不是气泡的关闭按钮)将关闭已打开的气泡|
|minZoom|Number|W.config.getMinZoom()|地图最小级别|
|maxZoom|Number|W.config.getMaxZoom()|地图最大级别|
|maxBounds|[LatLngBounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLngBounds.html)|W.config.getMaxBounds()|地图范围|
|doubleClickZoom|Boolean|true|当双击地图时,是否放大地图|
|dragging|Boolean|true|鼠标拖拽或触摸地图是否可被拖动|
---
## 方法
### 图层和控件相关方法
|方法名|返回值|描述|
|:----|:----|:----|
|addControl(<[Control](http://www.dituyi.com.cn/docs/js-api/wmap-api/Control.html)> control)|this|添加地图控件|
|removeControl(<[Control](http://www.dituyi.com.cn/docs/js-api/wmap-api/Control.html)> control)|this|删除地图控件|
|addLayer(<[Layer](http://www.dituyi.com.cn/docs/js-api/wmap-api/Layer.html)>layer )|this|将图层添加到地图上|
|removeLayer<[Layer](http://www.dituyi.com.cn/docs/js-api/wmap-api/Layer.html)>layer|this|从地图上删除图层|
|hasLayer<[Layer](http://www.dituyi.com.cn/docs/js-api/wmap-api/Layer.html)>layer|Boolean|判断图层是否已经叠加到地图上|
|openPopup(<[Popup](http://www.dituyi.com.cn/docs/js-api/wmap-api/Popup.html)>popup )|this|在地图上打开一个气泡|
|closePopup()|this|关闭地图上的气泡|
### 修改地图状态相关方法
|方法名|返回值|描述|
|:----|:----|:----|
|setView(<[LatLng](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLng.html)> center,< Number > zoom)|this|设置地图视角(中心点和级别)|
|setZoom(< Number >zoom)|this|设置地图级别|
|zoomIn()|this|放大地图|
|zoomOut()|this|缩小地图|
|fitBounds(<[LatLngBounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLngBounds.html)> bounds)|this|设定地图范围|
|panTo(<[LatLng](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLng.html)> latlng)|this|平移地图至指定的坐标|
|panBy(<[Point](http://www.dituyi.com.cn/docs/js-api/wmap-api/Point.html)> offset)|this|平移地图到指定的像素点|
|flyTo(<[LatLng](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLng.html)>latlng,<Number>zoom?)|this|平滑的跳转到指定的位置和级别|
|flyToBounds(<[LatLngBounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLngBounds.html)> bounds)|this|平滑跳转到指定的范围|
|setMaxBounds(<[Bounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/Bounds.html)>bounds)|this|设置地图最大范围|
|setMinZoom(< Number > zoom)|this|设置地图最小级别|
|setMaxZoom(< Number > zoom)|this|设置地图最大级别|
|stop()|this|停止地图正在进行的行为panTo、FlyTo等|
### 获得地图状态相关方法
|方法名|返回值|描述|
|:----|:----|:----|
|getCenter()|[LatLng](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLng.html)|获得地图中心点|
|getZoom()|Number|获得地图级别|
|getBounds()|[LatLngBounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLngBounds.html)|获得地图当前范围|
|getMinZoom()|Number|获得地图最小级别|
|getMaxZoom()|Number|获得地图最大级别|
|getBoundsZoom(<[LatLngBounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/LatLngBounds.html)>bounds,<Boolean>inside?)|Number|获得填充指定范围的地图最大级别|
|getSize()|[Point](http://www.dituyi.com.cn/docs/js-api/wmap-api/Point.html)|获得地图的像素大小|
|getPixelBounds()|[Bounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/Bounds.html)|获得地图当前的像素大小范围|
|getPixelOrigin()|[Point](http://www.dituyi.com.cn/docs/js-api/wmap-api/Point.html)|获得地图像素范围大小从原点开始计算|
|getPixelWorldBounds(< Number >zoom?)|[Bounds](http://www.dituyi.com.cn/docs/js-api/wmap-api/Bounds.html)|获得地图的像素范围|
### 绘制相关方法
|方法名|返回值|描述|
|:----|:----|:----|
|drawPoint(< Function > callback)|this|绘制点 该回调函数有一个参数:该点的坐标(geom)|
|drawCircle(< Function > callback)|this|绘制圆 该回调函数有两个参数:圆心的坐标(geom),圆的半径(radius)|
|drawRectangle(< Function > callback)|this|绘制矩形 该回调函数有一个参数:该矩形的坐标(geom)|
|drawLineString(< Function > callback)|this|绘制折线 该回调函数有一个参数:该折线的坐标(geom)|
|drawPolygon(< Function > callback)|this|绘制多边形 该回调函数有一个参数:该多边形的坐标(geom)|
|stopDraw()|this|停止绘制|
|measureArea(< Function > callback)|this|绘制一个面并且测量它的面积,该回调函数有两个参数:该面的面积(area) 没有可读性(单位:平方米), 该面的面积(readableArea) 有可读性(单位:平方千米)|
|measureLength(< Function > callback)|this|绘制一个折线并且测量它的长度,该回调函数有两个参数:该折线的长度(length) 没有可读性(单位:米), 该折线的长度(readableLength) 有可读性(单位:千米)|
### GeoJSON相关相关方法
|方法名|返回值|描述|
|:----|:----|:----|
|geometryToLayer(< Object > geojson,< Options> options?)|[Layer](http://www.dituyi.com.cn/docs/js-api/wmap-api/Layer.html)|将GeoJSON要素或几何对象转换为Layer|
|geometryToCircle(< Object > geojson,< Number> redius,< Options> options?)|[Circle](http://www.dituyi.com.cn/docs/js-api/wmap-api/Circle.html)|将GeoJSON要素转换为一个Circle Layer|
|geometryToMarker(< Object > geojson,< Options> options?)|[Marker](http://www.dituyi.com.cn/docs/js-api/wmap-api/Marker.html)|将GeoJSON要素转换为Marker|
|geometryToCircleMarker(< Object > geojson,< Options> options?)|[CircleMarker](http://www.dituyi.com.cn/docs/js-api/wmap-api/CircleMarker.html)|将GeoJSON要素转换为CircleMarker|
|asFeature(< Object > geom)|Feature|将GeoJSON几何对象转换为GeoJSON 要素对象|
|asGeometry(< Object > feature)|Geometry|将GeoJSON要素对象转换为GeoJSON 几何对象|
### 其他方法
|方法名|返回值|描述|
|:----|:----|:----|
|invalidateSize()|this|如果地图容器的大小发生变化,调用这个方法可以动态的改变地图的大小|
---
## 事件
### 图层相关事件
|事件名称|数据|描述|
|:----|:----|:----|
|baselayerchange|[LayersControlEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/LayersControlEvent.md)|当底图改变时触发|
|overlayadd|[LayersControlEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/LayersControlEvent.md)|当在图层控件中选择显示一个图层时触发该事件|
|overlayremove|[LayersControlEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/LayersControlEvent.md)|当在图层控件中选择隐藏一个图层时触发该事件|
|layeradd|[LayerEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/LayerEvent.md)|当向地图上添加一个图层时触发|
|layerremove|[LayerEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/LayerEvent.md)|当从地图上删除一个图层时触发|
### 地图状态改变事件
|事件名称|数据|描述|
|:----|:----|:----|
|zoomlevelschange|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图级别改变时触发|
|resize|[ResizeEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/ResizeEvent.md)|当地图大小发生改变的时候触发|
|unload|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图销毁时触发|
|viewreset|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图上的内容需要重绘时触发,一般是在地图级别发生改变,或地图加载时触发|
|load|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图第一次加载时触发.|
|zoomstart|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图级别发生改变前触发|
|movestart|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图移动开始时触发|
|zoom|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图级别改变时触发|
|move|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图移动时触发|
|zoomend|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图级别发生改变后触发|
|moveend|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图移动后触发|
### 气泡相关事件
|事件名称|回调数据|描述|
|:----|:----|:----|
|popupopen|[PopupEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/PopupEvent.md)|当气泡打开时触发|
|popupclose|[PopupEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/PopupEvent.md)|当气泡关闭时触发|
|autopanstart|[Event](http://www.dituyi.com.cn/docs/js-api/wmap-api/Event.md)|当地图自动移动时触发,一般都是在弹出气泡的时候触发|
### 提示信息事件
|事件名称|回调数据|描述|
|:----|:----|:----|
|tooltipopen|[TooltipEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/TooltipEvent.md)|当提示信息打开时触发|
|tooltipclose|[TooltipEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/TooltipEvent.md)|当提示信息关闭时触发|
### 交互相关事件
|事件名称|回调数据|描述|
|:----|:----|:----|
|click|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当点击地图时触发|
|dblclick|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当双击地图时触发|
|mousedown|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当鼠标落下时触发|
|mouseup|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当鼠标弹起时触发|
|mouseover|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当鼠标移入时触发|
|mouseout|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当鼠标移出触发|
|mousemove|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当鼠标移动时触发|
|contextmenu|[MouseEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/MouseEvent.md)|当点击右键时触发|
|keypress|[KeyboardEvent](http://www.dituyi.com.cn/docs/js-api/wmap-api/KeyboardEvent.md)|当点击键盘上的按钮时触发|