访问Openlayers网站(https://jinuss.github.io/Openlayers_map_pages/,网站是基于
Vue3
+Openlayers
,里面有大量的实践和案例。觉得还不错,可以给个小星星Star,鼓励一波 https://github.com/Jinuss/OpenlayersMap哦~
概述
在 Openlayers 中,CanvasLineStringBuilder
类用于构建绘制线段指令集的构建器,它继承于CanvasBuilder
类,关于CanvasBuilder
类,可以参考这篇文章源码分析之Openlayers中CanvasBuilder类
本文主要介绍CanvasLineStringBuilder
类构建绘制线段指令集的过程以及源码分析。
源码分析
LineStringBuilder
类的源码实现
LineStringBuilder
类的源码实现如下:
class CanvasLineStringBuilder extends CanvasBuilder {
constructor(tolerance, maxExtent, resolution, pixelRatio) {
super(tolerance, maxExtent, resolution, pixelRatio);
}
drawFlatCoordinates_(flatCoordinates, offset, end, stride) {
const myBegin = this.coordinates.length;
const myEnd = this.appendFlatLineCoordinates(
flatCoordinates,
offset,
end,
stride,
false,
false
);
const moveToLineToInstruction = [
CanvasInstruction.MOVE_TO_LINE_TO,
myBegin,
myEnd,
];
this.instructions.push(moveToLineToInstruction);
this.hitDetectionInstructions.push(moveToLineToInstruction);
return end;
}
drawLineString(lineStringGe