Skip to content

Commit 2a2d9b0

Browse files
authored
fix point symbolizer's dxdy
1 parent 2a256b8 commit 2a2d9b0

File tree

6 files changed

+47
-17
lines changed

6 files changed

+47
-17
lines changed

src/renderer/geometry/symbolizers/DrawAltitudeSymbolizer.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { isObject } from 'core/util';
2+
import Point from 'geo/Point';
23
import PointSymbolizer from './PointSymbolizer';
34
import StrokeAndFillSymbolizer from './StrokeAndFillSymbolizer';
45
import Canvas from 'core/Canvas';
@@ -32,6 +33,10 @@ export default class DrawAltitudeSymbolizer extends PointSymbolizer {
3233
// for get2DExtent
3334
this.style['lineWidth'] = 0;
3435
}
36+
this.dxdy = this._defineStyle({
37+
'dx' : symbol['textDx'] || symbol['markerDx'],
38+
'dy' : symbol['textDy'] || symbol['markerDy']
39+
});
3540
}
3641

3742
symbolize(ctx) {
@@ -63,6 +68,11 @@ export default class DrawAltitudeSymbolizer extends PointSymbolizer {
6368
}
6469
}
6570

71+
getDxDy() {
72+
const s = this.dxdy;
73+
return new Point(s['dx'] || 0, s['dy'] || 0);
74+
}
75+
6676
get2DExtent() {
6777
if (this.geometry.type === 'LineString') {
6878
return StrokeAndFillSymbolizer.prototype.get2DExtent.apply(this);

src/renderer/geometry/symbolizers/ImageMarkerSymbolizer.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { isNil, isNumber, isArrayHasData, getValueOrDefault } from 'core/util';
2+
import Point from 'geo/Point';
23
import PointExtent from 'geo/PointExtent';
34
import Canvas from 'core/Canvas';
45
import PointSymbolizer from './PointSymbolizer';
@@ -99,6 +100,13 @@ export default class ImageMarkerSymbolizer extends PointSymbolizer {
99100
return r * Math.PI / 180;
100101
}
101102

103+
getDxDy() {
104+
const s = this.style;
105+
const dx = s['markerDx'],
106+
dy = s['markerDy'];
107+
return new Point(dx, dy);
108+
}
109+
102110
getMarkerExtent(resources) {
103111
const url = this.style['markerFile'],
104112
img = resources ? resources.getImage(url) : null;
@@ -115,7 +123,10 @@ export default class ImageMarkerSymbolizer extends PointSymbolizer {
115123
'markerOpacity': getValueOrDefault(s['markerOpacity'], 1),
116124
'markerWidth': getValueOrDefault(s['markerWidth'], null),
117125
'markerHeight': getValueOrDefault(s['markerHeight'], null),
118-
'markerRotation' : getValueOrDefault(s['markerRotation'], 0)
126+
'markerRotation' : getValueOrDefault(s['markerRotation'], 0),
127+
128+
'markerDx': getValueOrDefault(s['markerDx'], 0),
129+
'markerDy': getValueOrDefault(s['markerDy'], 0)
119130
};
120131
}
121132
}

src/renderer/geometry/symbolizers/PointSymbolizer.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { computeDegree } from 'core/util';
22
import PointExtent from 'geo/PointExtent';
3-
import Point from 'geo/Point';
43
import CanvasSymbolizer from './CanvasSymbolizer';
54

65
/**
@@ -20,10 +19,6 @@ class PointSymbolizer extends CanvasSymbolizer {
2019
this.symbol = symbol;
2120
this.geometry = geometry;
2221
this.painter = painter;
23-
this.dxdy = this._defineStyle({
24-
'dx' : symbol['textDx'] || symbol['markerDx'],
25-
'dy' : symbol['textDy'] || symbol['markerDy']
26-
});
2722
}
2823

2924
get2DExtent() {
@@ -37,11 +32,6 @@ class PointSymbolizer extends CanvasSymbolizer {
3732
return extent;
3833
}
3934

40-
getDxDy() {
41-
const s = this.dxdy;
42-
return new Point(s['dx'] || 0, s['dy'] || 0);
43-
}
44-
4535
_getRenderPoints() {
4636
return this.getPainter().getRenderPoints(this.getPlacement());
4737
}

src/renderer/geometry/symbolizers/TextMarkerSymbolizer.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
isArrayHasData,
66
getValueOrDefault
77
} from 'core/util';
8+
import Point from 'geo/Point';
89
import { hasFunctionDefinition } from 'core/mapbox';
910
import { splitTextToRow, getAlignPoint, replaceVariable } from 'core/util/strings';
1011
import PointExtent from 'geo/PointExtent';
@@ -82,6 +83,11 @@ export default class TextMarkerSymbolizer extends PointSymbolizer {
8283
return r * Math.PI / 180;
8384
}
8485

86+
getDxDy() {
87+
const s = this.style;
88+
return new Point(s['textDx'], s['textDy']);
89+
}
90+
8591
getMarkerExtent() {
8692
const dxdy = this.getDxDy(),
8793
style = this.style;
@@ -119,6 +125,9 @@ export default class TextMarkerSymbolizer extends PointSymbolizer {
119125
'textWrapCharacter': getValueOrDefault(s['textWrapCharacter'], '\n'),
120126
'textLineSpacing': getValueOrDefault(s['textLineSpacing'], 0),
121127

128+
'textDx': getValueOrDefault(s['textDx'], 0),
129+
'textDy': getValueOrDefault(s['textDy'], 0),
130+
122131
'textHorizontalAlignment': getValueOrDefault(s['textHorizontalAlignment'], 'middle'), //left | middle | right | auto
123132
'textVerticalAlignment': getValueOrDefault(s['textVerticalAlignment'], 'middle'), // top | middle | bottom | auto
124133
'textAlign': getValueOrDefault(s['textAlign'], 'center'), //left | right | center | auto

src/renderer/geometry/symbolizers/VectorMarkerSymbolizer.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ export default class VectorMarkerSymbolizer extends PointSymbolizer {
5353

5454
}
5555

56+
getDxDy() {
57+
const s = this.style;
58+
const dx = s['markerDx'],
59+
dy = s['markerDy'];
60+
return new Point(dx, dy);
61+
}
62+
5663
_drawMarkers(ctx, cookedPoints, resources) {
5764

5865
const strokeAndFill = this.strokeAndFill;
@@ -274,6 +281,9 @@ export default class VectorMarkerSymbolizer extends PointSymbolizer {
274281
'markerLineDasharray': getValueOrDefault(s['markerLineDasharray'], []),
275282
'markerLinePatternFile': getValueOrDefault(s['markerLinePatternFile'], null),
276283

284+
'markerDx': getValueOrDefault(s['markerDx'], 0),
285+
'markerDy': getValueOrDefault(s['markerDy'], 0),
286+
277287
'markerWidth': getValueOrDefault(s['markerWidth'], 10),
278288
'markerHeight': getValueOrDefault(s['markerHeight'], 10),
279289

test/geometry/symbol/SymbolSpec.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ describe('SymbolSpec', function () {
139139
expect(symbolizer.style.markerFillOpacity).to.be.eql(0.5);
140140
expect(symbolizer.style.markerLineWidth).to.be.eql(2);
141141
expect(symbolizer.style.markerLineOpacity).to.be.eql(0.6);
142-
expect(symbolizer.dxdy.dx).to.be.eql(1);
143-
expect(symbolizer.dxdy.dy).to.be.eql(2);
142+
expect(symbolizer.style.markerDx).to.be.eql(1);
143+
expect(symbolizer.style.markerDy).to.be.eql(2);
144144
});
145145

146146
it('image marker symbolizer', function () {
@@ -156,8 +156,8 @@ describe('SymbolSpec', function () {
156156
expect(symbolizer.style.markerWidth).to.be.eql(20);
157157
expect(symbolizer.style.markerHeight).to.be.eql(30);
158158
expect(symbolizer.style.markerOpacity).to.be.eql(0.5);
159-
expect(symbolizer.dxdy.dx).to.be.eql(1);
160-
expect(symbolizer.dxdy.dy).to.be.eql(2);
159+
expect(symbolizer.style.markerDx).to.be.eql(1);
160+
expect(symbolizer.style.markerDy).to.be.eql(2);
161161
});
162162

163163
it('text marker symbolizer', function () {
@@ -178,8 +178,8 @@ describe('SymbolSpec', function () {
178178
expect(symbolizer.style.textHaloRadius).to.be.eql(4);
179179
expect(symbolizer.style.textWrapWidth).to.be.eql(3);
180180
expect(symbolizer.style.textLineSpacing).to.be.eql(2);
181-
expect(symbolizer.dxdy.dx).to.be.eql(1);
182-
expect(symbolizer.dxdy.dy).to.be.eql(2);
181+
expect(symbolizer.style.textDx).to.be.eql(1);
182+
expect(symbolizer.style.textDy).to.be.eql(2);
183183
});
184184
});
185185

0 commit comments

Comments
 (0)