1.0.22 • Published 7 months ago

@sword0916/wings-map v1.0.22

Weekly downloads
-
License
ISC
Repository
-
Last release
7 months ago

wings-map

一、项目安装和引用

1、安装

npm i @sword0916/wings-map

2、引用

import S from "@sword0916/wings-map"

3、效果展示

详见examples/01总体效果演示.html

01总体效果演示.png

4、基本共识

本库采用平面直角坐标系。

x轴向右,y轴向上

角度逆时针旋转为正,顺时针旋转为负。

00共识.jpg

二、创建map

1、初始化一个地图

let map = new S.Map({
    containerId: "containerId"
});

2、地图参数说明

序号参数名类型默认值说明
1containerIdstringwingsMapdom的ID
2widthnumber600地图的宽,单位是px
3heightnumber400地图的高,单位是px
4minXnumber-300地图最小横坐标
5minYnumber-200地图最小纵坐标
6maxXnumber300地图最大横坐标
7maxYnumber200地图最大纵坐标
8scalebooleantrue是否启用缩放
9rulerbooleantrue是否启用测距
10brushbooleantrue是否启用画笔(可绘制:点、线、圆、正方形和多边形)
11wholebooleantrue是否启用全图(回到初始视角)
12rotatebooleantrue是否启用旋转
13panbooleantrue是否启用平移
14keyboardbooleantrue是否启用键盘操作(缩放(+、-)、平移(↑、↓、←、→)、全图(Backspace))
15markbooleantrue是否启用标点
16positionbooleanfalse是否启用位置坐标(显示鼠标坐标)
17layerBtnbooleanfalse是否显示图层按钮
18scaleBtnbooleanfalse是否显示缩放按钮
19rulerBtnbooleanfalse是否显示测距按钮
20brushBtnbooleanfalse是否显示画笔按钮
21wholeBtnbooleanfalse是否显示全图按钮
22rotateBtnbooleanfalse是否显示旋转按钮

3、效果展示

详见examples/02地图初始化.html

02地图初始化.jpg

三、添加图层

1、创建图层层

图层创建完成后,需要添加到地图(map)中才会渲染。创建图层的参数是该图层的名称。地图中可以添加多个图层,名称不能重复。

//创建一个名称是“layer01”的图层
let layer = new S.Layer('layer01');
//将图层layer添加到map中。
//map是初始化的地图对象。参照:二-1
map.addLayer(layer);

2、图层方法说明

序号方法名参数返回值类型说明
1getNamestring获取本图层的名称
2getVectorsMap集合本图层所有的向量集合
3isVisibleboolean本图层是否可见
4addVectors向量或向量数组添加向量。参照五-3
5removeVectors向量或向量数组删除向量。
6setIsVisibleboolean设置图层是否可见。true为可见,false为不可见

3、注意事项

图层的名称不可重复!

图层添加到地图(map)才会渲染!

四、添加标点

1、创建标点

//创建一个标点对象
let marker = new S.Marker({
    point: new S.Point(0, 0),
    title: '标点', 
    content: '文字tooltip'
});
//将标点添加到map中。
//map是初始化的地图对象。参照:二-1
map.addMarker(marker);

2、标点参数说明

序号参数名类型默认值说明
1pointPoint标点的位置。参照五-2-1
1titlestring标点标点的名称
2imageurl或image标点的图标
3movebooleanfalse是否移动
4contentstring或dom弹框的内容
5widthnumber30图标的宽,单位是px
6heightnumber30图标的高,单位是px
7offsetXnumber标点的宽的相反数的一半(-width/2)图标横向偏移,单位是px
8offsetYnumber标点的高的相反数(-height)图标纵向偏移,单位是px
9tooltipOffsetXnumber弹框横向偏移,单位是px
10tooltipOffsetYnumber弹框纵向偏移,单位是px

3、标点方法说明

序号方法名参数返回值类型说明
1moveToPoint(参照五-2-1)移动到指定坐标
1setTooltipstring或dom设置弹框内容

4、效果展示

详见examples/33添加标点.html

33添加标点.jpg

五、创建、添加向量

向量(Vector)需要添加到图层(Layer)中,才会渲染!

向量(Vector)由几何体(Geometry)和样式(普通对象)构成。

1、样式

样式是普通对象,如 {fill: false, stroke: true, fillOpacity: 0, strokeOpacity: 1, strokeColor: "red", strokeWidth: 1};

let s = {fill: true, stroke: true, fillOpacity: 1, strokeOpacity: 1, fillColor: 'black', strokeColor: 'red', strokeWidth: 1};
// v是创建出的向量;参照:五-3
let v = new S.Vector(geometry, s);

样式对象属性说明

序号属性名类型默认值说明
1fillbooleantrue是否填充
2strokebooleantrue是否描边
3fillOpacitynumber0.8填充的透明度(取值范围0-1)
4strokeOpacitynumber1描边的透明度(取值范围0-1)
5fillColorstringred填充的颜色
6strokeColorstringblack描边的颜色
7lineDasharray虚线的样式
8strokeWidthnumber描边的线宽
9textHeightnumber文字的高度
10fixedSizebooleanfalse图片大小是否固定
11pointRadiusnumber5绘制出的点对象半径

2、创建几何体

1、创建点

let p = new S.Point(x, y, bulge);

参数说明

序号参数名类型说明参照
1xnumber横轴坐标
2ynumber纵轴坐标
3bulgenumber凸度,在折线和多边形中可绘制出弧线。可不传

效果展示

详见examples/03绘制点.html

03绘制点.jpg

2、创建折线

let l = new S.Line(points);

参数说明

序号参数名类型说明参照
1pointsarray点对象数组五-2-1

效果展示

详见examples/05绘制折线.html

05绘制折线.jpg

3、创建圆

let c = new S.Circle(center, radius);

参数说明

序号参数名类型说明参照
1centerPoint点对象五-2-1
2radiusnumber圆的半径

效果展示

详见examples/09绘制圆形.html

09绘制圆形.jpg

4、创建圆弧

let a = new S.Arc(center, radius, startAngle, endAngle, anticlockwise);

参数说明

序号参数名类型说明参照
1centerPoint点对象五-2-1
2radiusnumber圆的半径
3startAnglenumber圆心与起始点连线和横轴的夹角角度(不是弧度。逆时针为正,顺时针为负)
4endAnglenumber圆心与终止点连线和横轴的夹角角度(不是弧度。逆时针为正,顺时针为负)
5endAngleboolean从起始角度到终止角度是否是逆时针旋转(true是逆时针,false是顺时针)

效果展示

详见examples/11绘制圆弧.html

11绘制圆弧.jpg

5、创建多边形

let p = new S.LineLoop(points);

参数说明

序号参数名类型说明参照
1pointsarray点对象数组五-2-1

效果展示

详见examples/07绘制多边形.html

07绘制多边形.jpg

6、创建椭圆

let e = new S.Ellipse(center, radiusX, radiusY, rotation);

参数说明

序号参数名类型说明参照
1centerPoint点对象五-2-1
2radiusXnumber椭圆横轴半径
3radiusYnumber椭圆纵轴半径
4rotationnumber旋转角度(不是弧度。逆时针为正,顺时针为负。)

效果展示

详见examples/13绘制椭圆.html

13绘制椭圆.jpg

3、生成向量

1、创建向量

let v = new S.Vector(geometry, style);

参数说明

序号参数名类型说明参照
1geometryGeometry几何体对象五-2
2styleobject样式对象五-1

2、添加向量

//layer是地图中的一个图层。参照:三-1
layer.addVectors(vectors);

参数说明

序号参数名类型说明参照
1vectors向量或向量数组要添加的向量五-3-1

六、控制工具

1、获取控制对象

获取的控制器包含了:平移工具、缩放工具、测距工具、画笔工具、全图工具和旋转工具。

//map是初始化的地图。参照:二-1
let control = map.getControl();

2、平移工具

//map是初始化的地图。参照:二-1
let control = map.getControl();
let pan = control.pan;

//默认步长平移(默认步长是10)
pan.panUp();//向上平移
pan.panDown();//向下平移
pan.panLeft();//向左平移
pan.panRight();//向右平移

//自定义步长平移
pan.panUp(20);//向上平移
pan.panDown(30);//向下平移
pan.panLeft(40);//向左平移
pan.panRight(50);//向右平移

初始化地图时启用键盘操作,可使用键盘上的“↑、↓、←、→”控制平移。

3、缩放工具

//map是初始化的地图。参照:二-1
let control = map.getControl();
let scale = control.scale;
//默认比例缩放
scale.scaleUp();//放大(默认缩放步长是20%)
scale.scaleDown();//缩小(默认缩放步长是20%)

//自定义比例缩放
scale.scaleUp(0.5);//放大50%
scale.scaleDown(0.6);//缩小60%

初始化地图时启用键盘操作,可使用键盘上的“+、-”控制缩放。

4、测距工具

//map是初始化的地图。参照:二-1
let control = map.getControl();
let ruler = control.ruler;
ruler.rule();//开始测距

5、画笔工具

//map是初始化的地图。参照:二-1
let control = map.getControl();
let brush = control.brush;
//开始绘制
//brushType画笔类型:"Point", "Line", "Circle", "Square", "Polygon"
//brushStyle画笔样式。参照:五-1
//返回Promise对象
brush.paint(brushType, brushStyle).then( v => {
    //绘制成功操作
    //v是绘制的向量
}).catch(e => {
    //绘制失败操作
    //e是错误提示
});

6、全图工具

//map是初始化的地图。参照:二-1
let control = map.getControl();
let whole = control.whole;
whole.viewWhole();//全图

初始化地图时启用键盘操作,可使用键盘上的“Backspace”控制全图。

7、旋转工具

//map是初始化的地图。参照:二-1
let control = map.getControl();
let rotate = control.rotate;
rotate.rotate(90);//旋转90度(逆时针为正,顺时针为负)

8、控制按钮

效果展示

详见examples/20默认按钮控制.html

20默认按钮控制.png

1.0.19

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.22

7 months ago

1.0.11

2 years ago

1.0.21

2 years ago

1.0.10

2 years ago

1.0.20

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago