@fleet-frontend/mower-maps
Version:
a mower maps in google maps
51 lines • 1.81 kB
TypeScript
import { BaseLayer } from './BaseLayer';
import { DrawElement } from './types';
import { ChannelStyle } from '@/types';
/**
* 路径图层
* 专门处理路径元素的渲染
*/
export declare class ChannelLayer extends BaseLayer {
level: number;
scale: number;
sn: string;
constructor(sn: string);
/**
* 获取元素
*/
getElements(): DrawElement<ChannelStyle>[];
/**
* SVG渲染方法
*/
drawSVG(svgGroup: SVGGElement, scale: number): void;
/**
* 创建排除分区内部的 clipPath 定义
* 思路: 由于channel不能画在分区内部,所以我们根据svg大小设定了可画区域是svg的viewBox,对应的矩形大小,然后把分区进行镂空,就可以得到可画区域
* 1. 先计算所有分区的边界,如果能拿到边界的svg的大小,就使用这个如果拿不到,就根据分区去计算
* 2. 获取需要镂空的路径,其中,如果分区存在相交,需要把两个分区进行合并获取外轮廓路径。
* 3. 将svg大小的矩形设置为顺时针,然后将需要镂空的路径设置为逆时针,结合fill-rule为evenodd,就可以得到可画区域
*/
private createExclusionClipPathDefinitions;
/**
* 渲染路径元素
*/
private renderPath;
/**
* 判断多边形是否为逆时针方向
* 使用叉积法计算多边形的有向面积
*/
private isCounterclockwise;
/**
* 检查两个多边形是否相交
*/
private doPolygonsIntersect;
/**
* 根据方向构建路径数据
*/
private buildPathData;
/**
* 智能合并重叠的分区,返回所有需要挖空的路径
*/
private mergeOverlappingPartitions;
}
//# sourceMappingURL=ChannelLayer.d.ts.map