diff --git a/examples/line/path/demo/road_light.js b/examples/line/path/demo/road_light.js index 6a3e19d77d..743ce809b4 100644 --- a/examples/line/path/demo/road_light.js +++ b/examples/line/path/demo/road_light.js @@ -1,5 +1,10 @@ -import { Scene, LineLayer } from '@antv/l7'; -import { Mapbox } from '@antv/l7-maps'; +import { + Scene, + LineLayer +} from '@antv/l7'; +import { + Mapbox +} from '@antv/l7-maps'; const scene = new Scene({ id: 'map', diff --git a/packages/layers/src/utils/__tests__/extrude_polyline.spec.ts b/packages/layers/src/utils/__tests__/extrude_polyline.spec.ts index c2ce9a7eb7..9cea6c49ce 100644 --- a/packages/layers/src/utils/__tests__/extrude_polyline.spec.ts +++ b/packages/layers/src/utils/__tests__/extrude_polyline.spec.ts @@ -18,6 +18,6 @@ describe('extrude polyline', () => { coord[1] = lat; }); const mesh = extrude.extrude(coords); - expect(mesh.indices.length).toBe(12); + expect(mesh.indices.length).toBe(6); }); }); diff --git a/packages/layers/src/utils/extrude_polyline.ts b/packages/layers/src/utils/extrude_polyline.ts index e44e0bf972..4c0a668e2e 100644 --- a/packages/layers/src/utils/extrude_polyline.ts +++ b/packages/layers/src/utils/extrude_polyline.ts @@ -34,12 +34,17 @@ function isPointEqual(a: vec2, b: vec2) { } function getArrayUnique(matrix: number[][]) { - const result: number[][] = []; - matrix.map((item) => { - item.sort((a, b) => b - a); - result.push(item); - }); - return result; + const map = new Map(); + for (let i = 0; i < matrix.length; i++) { + const key = matrix[0].toString() + '-' + matrix[1].toString(); + if (map.get(key)) { + matrix.splice(i, 1); + i++; + } else { + map.set(key, key); + } + } + return matrix; } export interface IExtrudeLineOption {