UNPKG

@fleet-frontend/mower-maps

Version:

a mower maps in google maps

51 lines 1.81 kB
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