0.0.7-beta12 • Published 5 months ago

amap-toolkit v0.0.7-beta12

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

高德未支持工具封装

安装

npm install amap-toolkit

使用

import AMapToolkit from "amap-toolkit";

const mapIns = new AMap.Map("container");

const polygonRangingIns = new AMapToolkit.PolygonRanging(mapIns);

// 或者直接使用部分功能
import { PolygonRanging } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const polygonRangingIns = new PolygonRanging(mapIns);

polygonRangingIns.open(); // .start() 也可以

本地运行

git clone https://github.com/MeetTheBest/amap-toolkit.git

cd amap-toolkit

npm install

npm run dev

# node 版本需要大于 v16.19.1
# 已安装 nvm 情况下,根目录下执行 nvm use 切换 node 版本

通用 API

参数说明类型
start启用相应能力instance.start(arg?)
stop停止相应能力instance.stop()
destroy销毁相应能力instance.destroy()

多边形类工具

多边形测距 PolygonRanging

示例

import { PolygonRanging } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const polygonRangingIns = new PolygonRanging(mapIns);

const polygon = new AMap.Polygon({});

// 开启测距
polygonRangingIns.start(polygon);

// 适当时机销毁测距(如组件的 destroy 生命周期)
polygonRangingIns.destroy();

多边形测距

多边形绘制时测距 PolygonRangingInDrawing

示例

import { PolygonRangingInDrawing } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const polygonRangingIns = new PolygonRangingInDrawing(mapIns);

const mouseTool = new AMap.MouseTool({});

mouseTool.on("draw", () => {
    // 绘制完成后,需要停止
    polygonRangingIns.stop();
});

// 开始绘制多边形
mouseTool.polygon();

// 开启测距
polygonRangingIns.start();

// 适当时机销毁测距(如组件的 destroy 生命周期)
polygonRangingIns.destroy();

多边形绘制时测距

多边形编辑器测距 PolygonEditorRanging

示例

import { PolygonEditorRanging } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const polygon = new AMap.Polygon({});

const editor = new AMap.PolygonEditor(mapIns, polygon);

const polygonEditorRangingIns = new PolygonEditorRanging(mapIns);

// 开启测距
polygonEditorRangingIns.start(editor);

// 适当时机停止测距
polygonEditorRangingIns.stop();

// 适当时机销毁测距(如组件的 destroy 生命周期)
polygonEditorRangingIns.destroy();

多边形编辑器测距

PolygonEditorEvent 多边形编辑器操作点事件

为什么要做这个?因为高德的 PolygonEditoradjust 事件,只支持在操作点位结束后响应,并且响应的内容是当前编辑的多边形。

示例

import { PolygonEditorEvent } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const polygon = new AMap.Polygon({});

const editor = new AMap.PolygonEditor(mapIns, polygon);
editor.open();

const polygonEditorEventIns = new PolygonEditorEvent(editor);

polygonEditorEventIns.on("mousedown", (target) => {
    console.log("当前鼠标按下点位", target);
});

polygonEditorEventIns.on("mousemove", (target) => {
    console.log("当前移动点位", target);
});

polygonEditorEventIns.on("mouseup", (target) => {
    console.log("当前鼠标松开点位", target);
});

// 适当时机销毁测距(如组件的 destroy 生命周期)
polygonEditorEventIns.clearAll();

多边形编辑器事件

API

参数说明类型
on监听指定事件on(eventName: mousedown \| mousemove \| mouseup, callback: (target: AMap.CircleMarker) => void)
off移除指定事件off(eventName: mousedown \| mousemove \| mouseup, callback: (target: AMap.CircleMarker) => void)
once监听指定事件行为,触发一次后自动移除once(eventName: mousedown \| mousemove \| mouseup, callback: (target: AMap.CircleMarker) => void)
clearAll移除指定事件监听,eventName 不传则移除全部clearAll(eventName?: mousedown \| mousemove \| mouseup)

类矩形

为什么要做这个?因为高德的 Rectangle 是通过2点(西南点和东北点)创建矩形,所以无法创建出非水平方向的矩形,且不支持旋转功能;

示例

import { LikeRectangle } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const likeRectangleOptions = {
    map: mapIns,
    center: [116.400274, 39.905812] as [number, number],
    width: 200,
    height: 50,
    draggable: true,
    cursor: "pointer",
    fillOpacity: 0.3,
    strokeOpacity: 0.8,
    rotatable: true,
    bubble: true, // 事件穿透
};

// 使用 ts 时,地图会校验没有 LikeRectangle 类型
polygon = new LikeRectangle(likeRectangleOptions)! as unknown as AMap.Polygon;

mapIns.add([polygon]);

类矩形

API

参数说明类型
path矩形的 4 个点经纬度[LngLat, LngLat, LngLat, LngLat]
center中心点(宽+高+中心点创建必传LngLat
width宽度(使用中心点创建必传number
height高度(使用中心点创建必传number

类矩形编辑

示例

import { LikeRectangle, LikeRectangleEditor } from "amap-toolkit";

const mapIns = new AMap.Map("container");

const likeRectangleOptions = {
    map: mapIns,
    center: [116.400274, 39.905812] as [number, number],
    width: 200,
    height: 50,
    draggable: true,
    cursor: "pointer",
    fillOpacity: 0.3,
    strokeOpacity: 0.8,
    rotatable: true,
    bubble: true, // 事件穿透
};

// 使用 ts 时,地图会校验没有 LikeRectangle 类型
polygon = new LikeRectangle(likeRectangleOptions)! as unknown as AMap.Polygon;

mapIns.add([polygon]);

likeRectangleEditorIns = new LikeRectangleEditor(
    mapIns!,
    likeRectangleIns as LikeRectangle,
    options, // options 配置如下
);
likeRectangleEditorIns.open();

类矩形

options API

参数说明类型
onChange编辑器变化事件(type: string, data: any) => void;
isMobile是否为移动端(默认falseboolean