Skip to content

Commit 3a6349f

Browse files
authored
markerPlacement support 'vertex-firstlast' (#2532)
1 parent bb7ab95 commit 3a6349f

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

packages/maptalks/src/renderer/geometry/PointRenderer.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Rectangle from '../../geometry/Rectangle';
66
import LineString from '../../geometry/LineString';
77
import Polygon from '../../geometry/Polygon';
88
import Point from '../../geo/Point';
9-
import {WithNull} from "../../types/typings";
9+
import { WithNull } from "../../types/typings";
1010

1111
// 有中心点的图形的共同方法
1212
const CenterPointRenderer = {
@@ -19,7 +19,7 @@ const CenterPointRenderer = {
1919
export type CenterPointRendererType = typeof CenterPointRenderer;
2020

2121
declare module '../../geometry/Marker' {
22-
interface Marker extends CenterPointRendererType {}
22+
interface Marker extends CenterPointRendererType { }
2323
}
2424

2525
/**
@@ -131,6 +131,23 @@ const PolyRenderer = {
131131
points = l ? [curretPoint] : [];
132132
const previous = l > 1 ? l - 2 : l - 1;
133133
rotations = l ? [[coords[previous] ? map._prjToPointAtRes(coords[previous], glRes) : curretPoint, curretPoint]] : [];
134+
} else if (placement === 'vertex-firstlast') {
135+
points = [];
136+
rotations = [];
137+
const coords = this._getPrjCoordinates();
138+
const l = coords.length;
139+
if (l) {
140+
//first
141+
const point0 = map._prjToPointAtRes(coords[0], glRes)
142+
points = [point0];
143+
if (l > 1) {
144+
rotations = [[point0, map._prjToPointAtRes(coords[1], glRes)]];
145+
const point1 = map._prjToPointAtRes(coords[l - 1], glRes);
146+
points.push(point1);
147+
const previous = l > 1 ? l - 2 : l - 1;
148+
rotations.push([map._prjToPointAtRes(coords[previous], glRes), point1]);
149+
}
150+
}
134151
} else {
135152
const center = this.getCenter();
136153
if (!center) {

packages/maptalks/src/symbol/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export type MarkerCommonSymbol = {
6161
markerDy?: SymbolNumberType;
6262
markerHorizontalAlignment?: 'left' | 'middle' | 'right';
6363
markerVerticalAlignment?: 'top' | 'middle' | 'bottom';
64-
markerPlacement?: 'point' | 'vertex' | 'line' | 'vertex-first' | 'vertex-last';
64+
markerPlacement?: 'center' | 'point' | 'vertex' | 'line' | 'vertex-first' | 'vertex-last' | 'vertex-firstlast';
6565
markerRotation?: number;
6666
}
6767

0 commit comments

Comments
 (0)