yleaflet v1.7.8
注意事项
请在页面中添加dom结构:
<div id="g-yleaflet"><div id="map"></div></div>
;请把
/public/yleaflet
文件夹拷贝到项目静态文件夹下;请使用组件导出的leaflet,不要使用自行安装的leaflet;
请在项目 index.html 文件中,引入
<link rel="stylesheet" href="静态文件夹路径/yleaflet/fonts/fonts.css">
;请在项目中引入
yleaflet/dist/main.min.css
,修改了leaflet部分默认样式;请先示例化地图图层:
new YLeaflet()
,然后使用其它图层;public/yleaflet/data
文件夹下是模拟数据,如有需要可参考;src/examples
文件夹下有图层使用样例,如有需要可参考;
导出的图层
图层列表
export default YLeaflet;
export { L, BaseLayer, ContourLayer, VelocityLayer, SpotLayer, MarkerLayer, WindPlumeLayer, TyphoonLayer, DrawLayer };
类名 | 图层名称 | 说明 |
---|---|---|
BaseLayer | 基础图层 | 抽象类,所有图层的基类,提供地图相关的共用方法 |
YLeaflet | 地图 | 用于初始化地图,已经绑定地图事件 |
ContourLayer | 等值线/面 | 栅格数据为二维数组,离散点数据为json数组 |
VelocityLayer | 流场 | 数据为u分量、v分量的二维数组 |
GridLayer | 色斑图 | 数据是一维数组 |
MarkerLayer | 标记 | 无 |
WindPlumeLayer | 风杆 | 数据为u分量或者速度的二维数组、v分量或者方向的二维数组 |
TyphoonLayer | 台风路径 | 台风数据,请严格遵守约定格式 |
DrawLayer | 绘制 | 可以绘制点、线、面、圆、多边形、态势图等 |
ScreenShot | 截图 | 框选截图 |
BaseLayer
说明
- 抽象类,所有图层的基类,提供地图相关的共用方法
属性
属性名 | 类型 | 说明 |
---|---|---|
map | L.Map | 实例化的map |
eventList | 事件基类 | 实例化的事件对象 |
方法
方法名 | 参数 | 说明 |
---|---|---|
init | 无 | 受保护的抽象方法,每一步操作的方法调用,尽量写在init里,逻辑清晰点 |
refreshMap | 无 | 地图重新渲染 |
lonLatToPoint | lon: number, lat: number | 经纬度转屏幕坐标 |
pointToLonLat | x: number, y: number | 屏幕坐标转经纬度 |
calculateIndexByLonlat | current: number, start: number, delta: number | 计算当前经纬度在栅格中的位置,该方法有bug |
getValueFromDataArray | yPos: number, xPos: number, xSize: number, data: (number | string)[ | 根据位置从栅格数据获取值 |
isRenderByRange | gridOptions: IGridOptions, width: number, height: number | 判断栅格数据的是否在目前地图的可视范围之内 |
removeLayer | 无 | 移除图层 |
show | 无 | 显示图层 |
hide | 无 | 隐藏图层 |
YLeaflet
说明
用于初始化地图,
new YLeaflet(options)
已经绑定
click
dblclick
preclick
movestart
move
moveend
zoomstart
zoom
zoomend
unload
等地图事件,通过this.eventList.on('click', (evt: L.LeafletEvent) => void)
进行监听;可以绑定多个事件this.eventList.on('click move', (evt: L.LeafletEvent) => void)
参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
containerId | string | g-yleaflet | 容器标签Id,地图标签是容器标签的子节点 |
mapId | string | map | 地图标签的Id |
center | { lon: number; lat: number } | { lat: 34.26, lon: 108.94 } | 地图的中心位置 |
zoom | number | 10 | 地图的缩放级别 |
zoomSnap | number | 0.5 | 地图的缩放系数 |
tileLayer | mapType[] | "TianDiTu.Normal.Map", "TianDiTu.Normal.Annotion" | 要加载的底图 |
maxZoom | number | 18 | 地图 的最大缩放级别 |
minZoom | number | 2 | 地图 的最小缩放级别 |
zoomControl | boolean | false | 是否显示地图自带的 +/- 缩放按纽 |
tdtLonlat | boolean | false | 天地图是否使用等经纬度投影 |
annotionPane | "tilePane"|"shadowPane" | shadowPane | 各图层的pane为overlayerPane,annotionPane的值为shadowPane时,标注图层会覆盖在自定义图层的上面 |
type mapType =
| "TianDiTu.Normal.Map"
| "TianDiTu.Normal.Annotion"
| "TianDiTu.Normal_Lonlat.Map"
| "TianDiTu.Normal_Lonlat.Annotion"
| "TianDiTu.Satellite.Map"
| "TianDiTu.Satellite.Annotion"
| "TianDiTu.Terrain.Map"
| "TianDiTu.Terrain.Annotion"
| "Geoq.Normal.Map"
| "Geoq.Normal.PurplishBlue"
| "Geoq.Normal.Gray"
| "Geoq.Normal.Warm"
| "GaoDe.Normal.Map"
| "GaoDe.Satellite.Map"
| "GaoDe.Satellite.Annotion"
| "Google.Normal.Map"
| "Google.Satellite.Map"
| "Google.Satellite.Annotion"
| "Baidu.Normal.Map"
| "Baidu.Satellite.Map"
| "Baidu.Satellite.Annotion"
| "SuperMap.China";
方法
参数名 | 参数 | 说明 |
---|---|---|
changeMap | tileLayer: mapType[] | 用于切换地图底图 |
showClickMarker | 无 | 点击地图时,显示图标 |
removeClickMarker | 无 | 清除点击地图时的显示图标 |
destroyMap | 无 | 销毁地图实例 |
ContourLayer
说明
用于绘制等值线/等值面,
new ContourLayer(data, options)
栅格数据为二维数组,从左下角开始,离散点数据为json数组
- 默认参数如下
const defaultOptions = {
scale: 1,
lonLatAlias: ["lon", "lat"],
isShowLabel: false,
contourLineOption: {
color: "green",
weight: 1,
},
contourLabelOption: {
font: "400 14px 微软雅黑",
fillColor: "#000",
strokeColor: "#fff",
},
undef: 999999,
}
参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
renderType | "surface" \| "line" | 必填 | surface:等值面, line: 等值线 |
dataType | "grid" \| "point" | 必填 | grid: 栅格数据,不用插值, point: 离散点数据,要做插值处理 |
gridOptions | IGridOptions | 必填 | 栅格参数,起始经纬度、步长等信息 |
analysisValues | number[] | 必填 | 以该数值进行分析绘制 |
scale | number | 1 | 数据的缩放倍数,如果原始数据被乘以10,scale = 0.1 |
field | string | 离散点数据时,必填 | 离散点数据时,取哪个字段的值 |
lonLatAlias | string | "lon", "lat" | 离散点数据时,经纬度的别名 |
legend | ILegend[] | 无 | 渲染类型为等值面时的图例 |
clipData | GeoJSON.Polygon | 对图层进行裁剪Polygon数据 | |
isShowLabel | boolean | false | 是否显示分析值 |
labelMaxDistance | number | label显示的间隔 | |
undef | number | 999999 | 无效数据 |
contourLineOption | IContourLineOption | {color: "green",weight: 1} | 等值线的样式 |
contourLabelOption | ILabelOption | { font: "400 14px 微软雅黑", fillColor: "#000", strokeColor: "#fff" } | label的样式 |
type TData {
(number \| string)[][] \| { [name: string]: number \| string }[]
}
interface ILegend {
value: number | string;
color: [number, number, number, number?];
}
interface IGridOptions {
xDelta: number;
xEnd: number;
xSize: number;
xStart: number;
yDelta: number;
yEnd: number;
ySize: number;
yStart: number;
}
interface IContourLineOption {
color?: string;
weight?: number;
}
interface ILabelOption {
font?: string;
fillColor?: string;
strokeColor?: string;
}
方法
方法名 | 参数 | 说明 |
---|---|---|
getImage | 无 | 返回图层图片,图片名为图层的范围 |
getContourGeoJSON | 无 | 返回等值线的geosjon |
refresh | data?: TData, options?: IOptions | 用新数据或者参数重新渲染图层 |
VelocityLayer
说明
- 用于绘制流场
new VelocityLayer(uArr, vArr, options)
- 数据为u分量、v分量的二维数组,数据从左上角或者左下角开始都可以
参数
- options参数
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
gridOptions | IGridOptions | 是 | 栅格参数,起始经纬度、步长等信息 |
legend | ILegend[] | 否 | 图例 |
velocityOptions | IVelocityOptions | 否 | 流场参数 |
- 流场参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
minVelocity | number | 0 | 粒子最小速度( m/s ) |
maxVelocity | number | 10 | 粒子最大速度( m/s ) |
velocityScale | number | 0.01 | 风速的比例 ( 粒子的小尾巴长度 ) |
lineWidth | number | 1 | 绘制粒子的线宽 |
colorScale | string[] | "rgba(255, 255, 255 ,1)" | 粒子颜色 |
particleAge | number | 90 | 粒子在再生之前绘制的最大帧数 |
particleMultiplier | number | 1 / 300 | 粒子计数标量( 粒子密度 ) |
frameRate | number | 24 | 每秒所需的帧数 |
方法
方法名 | 参数 | 说明 |
---|---|---|
updateData | u: number[][], v: number[][], options?: IGridOptions | 用新数据更新图层 |
updateOptions | options: IVelocityOptions | 用新的流场参数更新图层 |
GridLayer
说明
- 用于绘制色斑图,
new GridLayer(data, options)
- 数据是一维数组,从左下角开始或左上角开始都可以
- 因为用到了webWorker,请给参数
workerPath
正确的路径
参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
renderType | bitmap|pixel|value | 必填 | bitmap,栅格;pixel,渐变;value,填值 |
gridOptions | IGridOptions | 必填 | 栅格参数,起始经纬度、步长等信息 |
legend | ILegend | 必填 | 图例 |
workerPath | string | /public | 项目静态文件路径 |
scale | number | 1 | 数据的缩放倍数,如果原始数据被乘以10,scale = 0.1 |
undef | number | 999999 | 无效数据的值 |
clipData | GeoJSON.Polygon | 无 | 对图层进行裁剪Polygon数据 |
isSingle | boolean | false | 是否用单线程绘制 |
interface IGridOptions {
xDelta: number;
xEnd: number;
xSize: number;
xStart: number;
yDelta: number;
yEnd: number;
ySize: number;
yStart: number;
}
interface ILegend {
value: number | string;
color: [number, number, number, number?];
}
方法
方法名 | 参数 | 说明 |
---|---|---|
refresh | data?:(number|string)[],options?:Partial<IOptions> | 用新数据或参数更新图层 |
removeLayer | 无 | 删除图层,清除worker |
MarkerLayer
说明
- 用于打点显示离散点数据,
new MarkerLayer(data, options[], commonOptions)
- 数据为json数组
- commonOptions是通用参数,可选,参数属性同options
参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
type | "image" | "text" | "windPlume" | 必填 | 绘制类型 |
field | string | 必填 | 要绘制数据的字段名 |
clusterOptions | {isCluster?: boolean;maxClusterRadius?:number} | {isCluster: true, maxClusterRadius:40} | 聚合参数,是否聚合,以及聚合的半径 |
lonLatAlias | string[] | "lon","lat" | 经纬度别名 |
value | number | string | 无 | 绘制类型为image时,要绘制字段的值,即字段值等于value,才去绘制 |
url | string | "bold 40px wind" | 绘制类型为image时,iconUrl |
iconSize | [number, number] | 24, 24 | icon的大小 |
iconAnchor | [number, number] | #000 | icon的偏移 |
background | string | #000 | 绘制类型为text时,可以设置文本背景 |
color | string | #fff | 字体颜色 |
showPoint | boolean | false | 是否显示点 |
legend | ILegend[] | 无 | 绘制类型为text时的图例 |
suffix | string | 无 | 绘制类型为text时,文本前缀 |
prefix | string | 无 | 绘制类型为text时,文本后缀 |
popUp | { [name: string]:string[] }|string | 无 | 弹窗的内容 |
formatDataCallback | (data: any) => any; | 无 | 数据格式化的回调 |
clickCallback | (info: any, leafletEvent: L.LeafletEvent) => void; | 无 | Marker点击的回调 |
filterDataCallback | <T>(data: T[]) => T[]; | 无 | 数据过滤的回调 |
WindPlumeLayer
说明
- 用于绘制风杆,
new WindPlumeLayer(uOrSdata, vOrDdata, options)
- 数据为u分量或者速度的二维数组、v分量或者方向的二维数组
参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
dataType | "uv" | "sd" | 必填 | 数据类型是 uv 或者 风速风向 |
gridOptions | IGridOptions | 必填 | 栅格参数,起始经纬度、步长等信息 |
clipData | GeoJSON.Polygon | 无 | 对图层进行裁剪Polygon数据 |
scale | number | 1 | 数据的缩放倍数,如果原始数据被乘以10,scale = 0.1 |
spacing | number | 30 | 风杆的间距,单位为像素 |
font | string | "bold 40px wind" | 风杆样式 |
legend | ILegend | 无 | 风杆的颜色,根据风速的图例计算 |
fillColor | string | #000 | 给风杆一个统一的颜色,如果有legend数据,legend优先 |
showValue | (“ws“|“wd“)[] | [] | 是否打点显示风速风向数值 |
方法
方法名 | 参数 | 说明 |
---|---|---|
refresh | uOrSdata?:vOrDdata[]][],vOrDdata?: number[][],options?:Partial<IWindPlumeOptions> | 用新数据或参数更新图层 |
ScreenShot
说明
框选截图,
new ScreenShot(domId)
继承自
DrawLayer
图层
参数
参数名 | 类型参数 | 默认值 | 说明 |
---|---|---|---|
domId | string | 用新数据或参数更新图层 | 会截取该domId节点下的元素 |
方法
方法名 | 参数 | 说明 |
---|---|---|
start | 无 | 用新数据或参数更新图层 |
end | 无 | 结束截图,返回一个Promise ,参数为DataURL |
ScreenShotByDomAndPixelRange | 静态方法 | 不会开启框选。通过参数进行截图 |
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago