Skip to content

Commit

Permalink
feat: 完成矢量图形覆盖物相关声明
Browse files Browse the repository at this point in the history
Polygon、Polyline、BezierCurve、Circle、CircleMarker、Ellipse、Rectangle
  • Loading branch information
xyy94813 committed Mar 11, 2024
1 parent 68652dc commit 70c9f48
Show file tree
Hide file tree
Showing 8 changed files with 746 additions and 0 deletions.
52 changes: 52 additions & 0 deletions types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,37 @@ import type {
MassMarkersStyleOption,
MassMarkersDataOption,
} from './overlays/MassMarks';
import type {
Polygon,
PolygonEventType,
PolygonOptions,
} from './overlays/Polygon';
import type {
Polyline,
PolylineOptions,
PolylineEventType,
} from './overlays/Polyline';
import type {
BezierCurve,
BezierCurveOptions,
BezierCurveEventType,
} from './overlays/BezierCurve';
import type { Circle, CircleOptions, CircleEventType } from './overlays/Circle';
import type {
CircleMarker,
CircleMarkerOptions,
CircleMarkerEventType,
} from './overlays/CircleMarker';
import type {
Ellipse,
EllipseOptions,
EllipseEventType,
} from './overlays/Ellipse';
import type {
Rectangle,
RectangleOptions,
RectangleEventType,
} from './overlays/Rectangle';

import type { Control, CommonControlConfig } from './controls/Control.d.ts';
import type { ControlBar, ControlBarConfig } from './controls/ControlBar.d.ts';
Expand Down Expand Up @@ -177,6 +208,27 @@ declare namespace AMap {
MassMarksEventType,
MassMarkersStyleOption,
MassMarkersDataOption,
Polygon,
PolygonEventType,
PolygonOptions,
Polyline,
PolylineOptions,
PolylineEventType,
BezierCurve,
BezierCurveOptions,
BezierCurveEventType,
Circle,
CircleOptions,
CircleEventType,
CircleMarker,
CircleMarkerOptions,
CircleMarkerEventType,
Ellipse,
EllipseOptions,
EllipseEventType,
Rectangle,
RectangleOptions,
RectangleEventType,

// 地图控件
Control,
Expand Down
107 changes: 107 additions & 0 deletions types/overlays/BezierCurve.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import Bounds from '../common/Bounds';
import type { LngLatLike } from '../common/LngLat';
import type Overlay from './Overlay';

export type BezierCurveOptions<ExtraData = any> = {
/**
* 描述为一个二维数组规则如下:第一个元素是起点, 之后的元素同时描述控制点和途经点,之后每个元素可以有0个到2个控制点 控制点在前,途经点在最后
* [
* [lng,lat], //起点0
* [lng,lat,lng,lat,lng,lat], //控制点、控制点、途经点2
* [lng,lat,lng,lat], //控制点、途经点3
* ]
* 或者
* [
* [ [lng,lat] ],//起点0
* [ [lng,lat] , [lng,lat] ], //控制点、途经点1
* [ [lng,lat] , [lng,lat] , [lng,lat] ], //控制点、控制点、途经点2
* [ [lng,lat] , [lng,lat] ] // 控制点、途经点3
* ]
*/
path?: number[][] | number[][][];
/** 多边形覆盖物的叠加顺序。 */
zIndex?: number;
/** 是否将覆盖物的鼠标或touch等事件冒泡到地图上 */
bubble?: boolean;
/** 指定鼠标悬停时的鼠标样式,自定义cursor,IE仅支持cur/ani/ico格式,Opera不支持自定义cursor */
cursor?: string;
/** 线条颜色,使用16进制颜色代码赋值。默认值为#00D3FC */
strokeColor?: string;
/** 轮廓线透明度,取值范围 [0,1]。默认为0.5 */
strokeOpacity?: number;
/** 轮廓线宽度。默认为 2 */
strokeWeight?: number;
/** 轮廓线样式,实线:solid,虚线:dashed */
strokeStyle?: string;
/** 描边的宽度,默认为1 */
borderWeight?: number;
/** 是否显示描边,默认false */
isOutline?: boolean;
/** 线条描边颜色,此项仅在isOutline为true时有效,默认:#00B2D5 */
outlineColor?: string;
/** 设置多边形是否可拖拽移动,默认为false */
draggable?: boolean;

extData?: ExtraData;
};

export type BezierCurveEventType =
| 'hide'
| 'show'
| 'click'
| 'dblclick'
| 'rightclick'
| 'mousedown'
| 'mouseup'
| 'mouseover'
| 'mouseout'
| 'touchstart'
| 'touchmove'
| 'touchend';

/**
* 贝塞尔曲线
* https://lbs.amap.com/api/javascript-api-v2/documentation#beziercurve
*/
export declare class BezierCurve<ExtractData> extends Overlay<
ExtractData,
BezierCurveEventType
> {
constructor(opts?: BezierCurveOptions<ExtractData>);

/** 获取贝塞尔曲线路径的节点数组 */
getPath(): number[][] | number[][][];
/**
* 设置组成该折线的节点数组,贝瑟尔曲线的路径。
* 描述为一个二维数组规则如下:第一个元素是起点, 之后的元素同时描述控制点和途经点,之后每个元素可以有0个到2个控制点 控制点在前,途经点在最后
* [
* [lng,lat], //起点0
* [lng,lat,lng,lat,lng,lat], //控制点、控制点、途经点2
* [lng,lat,lng,lat], //控制点、途经点3
* ]
* 或者
* [
* [ [lng,lat] ],//起点0
* [ [lng,lat] , [lng,lat] ], //控制点、途经点1
* [ [lng,lat] , [lng,lat] , [lng,lat] ], //控制点、控制点、途经点2
* [ [lng,lat] , [lng,lat] ] // 控制点、途经点3
* ]
*/
setPath(path?: number[][] | number[][][]): void;
/** 判断坐标是否在曲线内 */
contains(point: LngLatLike): void;
/** 获取曲线的总长度(单位:米)*/
getLength(): number;
/** 获取当前折线的矩形范围对象 */
getBounds(): Bounds | undefined;
/** 销毁内存-贝塞尔曲线 */
destroy(): void;
/** 设置贝塞尔曲线离地高度 (此方法和相关属性 height 适用于 JSAPI v2.1Beta 及以上版本) */
setHeight(height: number): void;
/** 获取当前贝塞尔曲线离地高度值 (此方法适用于 JSAPI 2.1Beta 及以上版本) */
getPolylineHeight(height: number): void;
/**
* @warning 文档中未明确说明,且未成功验证其存在性
**/
generateBuffer(...args: any[]): any;
}
85 changes: 85 additions & 0 deletions types/overlays/Circle.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import type { LngLat, LngLatLike } from '../common/LngLat';
import type Overlay from './Overlay';

export type CircleOptions<ExtraData = any> = {
/** 圆心位置 */
center?: LngLatLike;
/** 圆半径,单位:米 */
radius?: number;
/** 多边形覆盖物的叠加顺序。地图上存在多个多边形覆盖物叠加时,通过该属性使级别较高的多边形覆盖物在上层显示 */
zIndex?: number;
/** 是否将覆盖物的鼠标或touch等事件冒泡到地图上*/
bubble?: boolean;
/** 指定鼠标悬停时的鼠标样式,自定义cursor,IE仅支持cur/ani/ico格式,Opera不支持自定义cursor */
cursor?: string;
/** 轮廓线颜色,使用16进制颜色代码赋值。默认值为#00D3FC */
strokeColor?: string;
/** 轮廓线透明度,取值范围 [0,1] ,0表示完全透明,1表示不透明。默认为0.9 */
strokeOpacity?: number;
/** 轮廓线宽度 */
strokeWeight?: number;
/** 轮廓线样式,实线:solid,虚线:dashed */
strokeStyle?: 'solid' | 'dashed';
/**
* 勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效, 此属性在ie9+浏览器有效 取值:
* - 实线: [0,0,0] 虚线: [10,10],[10,10] 表示10个像素的实线和10个像素的空白(如此反复)组成的虚线
* - 点画线: [10,2,10],[10,2,10] 表示10个像素的实线和2个像素的空白 + 10个像素的实线和10个像素的空白 (如此反复)组成的虚线
*/
strokeDasharray?: Array<number>;
/** 多边形填充颜色,使用16进制颜色代码赋值,如:#00B2D5 */
fillColor?: string;
/** 多边形填充透明度,取值范围 [0,1],0表示完全透明,1表示不透明。默认为0.5 */
fillOpacity?: number;
/** 设置多边形是否可拖拽移动,默认为false */
draggable?: boolean;
/** 用户自定义属性,支持JavaScript API任意数据类型,如Polygon的id等 */
extData?: ExtraData;
};

export type CircleEventType =
| 'hide'
| 'show'
| 'click'
| 'dblclick'
| 'rightclick'
| 'mousedown'
| 'mouseup'
| 'mouseover'
| 'mouseout'
| 'touchstart'
| 'touchmove'
| 'touchend';

export declare class Circle<ExtraData = any> extends Overlay<
ExtraData,
CircleEventType
> {
constructor(opt?: CircleOptions<ExtraData>);

/** 获取圆点中心 */
getCenter(): LngLat;
/** 设置圆中心点 */
setCenter(lnglat: LngLatLike): void;
/** 获取圆点的半径 */
getRadius(): number;
/** 设置圆点的半径 */
setRaius(radius: number): void;
/**
* 同时设置中心和半径
* @warning 文档未提及,验证存在
*/
setCenterAndRadius(lnglat: LngLatLike, radius: number): void;
/** 销毁内存-圆形 */
destroy(): void;
/** 判断指定点坐标是否在圆内 */
contains(point: LngLatLike): boolean;
/** 获取多边形的面积(单位:平方米) */
getArea(): number;
/**
* 海拔高度值
* @version v2.1Beta 以上版本
**/
getPlaneHeight(): number;
}

export default Circle;
90 changes: 90 additions & 0 deletions types/overlays/CircleMarker.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import type { LngLat, LngLatLike } from '../common/LngLat';
import type Overlay from './Overlay';

export type CircleMarkerOptions<ExtraData = any> = {
/** 圆心位置 */
center?: LngLatLike;
/** 圆半径,单位:米 */
radius?: number;
/** 多边形覆盖物的叠加顺序。地图上存在多个多边形覆盖物叠加时,通过该属性使级别较高的多边形覆盖物在上层显示 */
zIndex?: number;
/** 是否将覆盖物的鼠标或touch等事件冒泡到地图上 */
bubble?: boolean;
/** 指定鼠标悬停时的鼠标样式,自定义cursor,IE仅支持cur/ani/ico格式,Opera不支持自定义cursor */
cursor?: string;
/** 轮廓线颜色,使用16进制颜色代码赋值。默认值为#00D3FC */
strokeColor?: string;
/** 轮廓线透明度,取值范围 [0,1] ,0表示完全透明,1表示不透明。默认为0.9 */
strokeOpacity?: number;
/** 轮廓线宽度 */
strokeWeight?: number;
/**
* 轮廓线样式,实线:solid,虚线:dashed. 默认:solid
* @warning 文档未提及
*/
// strokeStyle?: 'solid' | 'dashed';
/**
* 勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效, 此属性在ie9+浏览器有效 取值:
* - 实线: [0,0,0] 虚线: [10,10],[10,10] 表示10个像素的实线和10个像素的空白(如此反复)组成的虚线
* - 点画线: [10,2,10],[10,2,10] 表示10个像素的实线和2个像素的空白 + 10个像素的实线和10个像素的空白 (如此反复)组成的虚线
* @warning 文档未提及
*/
// strokeDasharray?: Array<number>;
/** 多边形填充颜色,使用16进制颜色代码赋值,如:#00B2D5 */
fillColor?: string;
/** 多边形填充透明度,取值范围 [0,1] ,0表示完全透明,1表示不透明。默认为0.5 */
fillOpacity?: number;
/** 设置多边形是否可拖拽移动,默认为false */
draggable?: boolean;
/** 用户自定义属性,支持JavaScript API任意数据类型,如Polygon的id等 */
extData?: ExtraData;
};

export type CircleMarkerEventType =
| 'hide'
| 'show'
| 'click'
| 'dblclick'
| 'rightclick'
| 'mousedown'
| 'mouseup'
| 'mouseover'
| 'mouseout'
| 'touchstart'
| 'touchmove'
| 'touchend';

/**
* 构造圆形对象,通过CircleOptions指定多边形样式
*
* https://lbs.amap.com/api/javascript-api-v2/documentation#circlemarker
*/
export declare class CircleMarker<ExtraData = any> extends Overlay<
ExtraData,
CircleMarkerEventType
> {
constructor(opts?: CircleMarkerOptions<ExtraData>);

/** 获取圆点中心 */
getCenter(): LngLat;
/** 设置圆中心点 */
setCenter(lnglat: LngLatLike): void;
/** 获取圆点的半径 */
getRadius(): number;
/** 设置圆点的半径 */
setRaius(radius: number): void;
/** 判断指定点坐标是否在圆内 */
contains(point: LngLatLike): boolean;
/** 销毁内存-CircleMarker */
destroy(): void;

/** 获取当前CircleMarker 的绝对高度 */
getCurAltitude(): boolean;

/**
* @warning 文档中未明确说明,且未成功验证其存在性
**/
generateBuffer(...args: any[]): any;
}

export default CircleMarker;
Loading

0 comments on commit 70c9f48

Please sign in to comment.