Skip to content

Commit

Permalink
fix: check if Array instead of number
Browse files Browse the repository at this point in the history
  • Loading branch information
IIFelix authored and KaiVolland committed Nov 28, 2024
1 parent c0cca07 commit dc0ebfa
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 1 deletion.
15 changes: 15 additions & 0 deletions data/olStyles/point_simpleoffset.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import OlStyle from 'ol/style/Style';
import OlStyleCircle from 'ol/style/Circle';
import OlStyleFill from 'ol/style/Fill';

const olSimplePoint = new OlStyle({
image: new OlStyleCircle({
radius: 6,
fill: new OlStyleFill({
color: '#FF0000'
}),
displacement: [1,1]
})
});

export default olSimplePoint;
19 changes: 19 additions & 0 deletions data/styles/point_simpleoffset.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Style } from 'geostyler-style';

const pointSimpleOffset: Style = {
name: 'OL Style',
rules: [
{
name: 'OL Style Rule 0',
symbolizers: [{
kind: 'Mark',
wellKnownName: 'circle',
color: '#FF0000',
radius: 6,
offset: [1, 1]
}]
}
]
};

export default pointSimpleOffset;
18 changes: 18 additions & 0 deletions src/OlStyleParser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import OlFeature from 'ol/Feature';
import OlStyleParser, { OlParserStyleFct } from './OlStyleParser';

import point_simplepoint from '../data/styles/point_simplepoint';
import point_simpleoffset from '../data/styles/point_simpleoffset';
import point_icon from '../data/styles/point_icon';
import point_icon_sprite from '../data/styles/point_icon_sprite';
import point_dynamic_icon from '../data/styles/point_dynamic_icon';
Expand Down Expand Up @@ -58,6 +59,7 @@ import filter_comparison_propertyFunction from '../data/styles/filter_comparison
import ol_function_marksymbolizer from '../data/olStyles/function_markSymbolizer';
import ol_function_nested_fillsymbolizer from '../data/olStyles/function_nested_fillSymbolizer';
import ol_point_simplepoint from '../data/olStyles/point_simplepoint';
import ol_point_simpleoffset from '../data/olStyles/point_simpleoffset';
import ol_point_icon from '../data/olStyles/point_icon';
import ol_point_icon_sprite from '../data/olStyles/point_icon_sprite';
import ol_point_simplesquare from '../data/olStyles/point_simplesquare';
Expand Down Expand Up @@ -155,6 +157,11 @@ describe('OlStyleParser implements StyleParser', () => {
expect(geoStylerStyle).toBeDefined();
expect(geoStylerStyle).toEqual(point_simplepoint);
});
it('can read an OpenLayers PointSymbolizer with displacement', async () => {
const { output: geoStylerStyle } = await styleParser.readStyle(ol_point_simpleoffset);
expect(geoStylerStyle).toBeDefined();
expect(geoStylerStyle).toEqual(point_simpleoffset);
});
it('can read an OpenLayers IconSymbolizer', async () => {
const { output: geoStylerStyle } = await styleParser.readStyle(ol_point_icon);
expect(geoStylerStyle).toBeDefined();
Expand Down Expand Up @@ -459,6 +466,17 @@ describe('OlStyleParser implements StyleParser', () => {
expect(olCircle.getRadius()).toBeCloseTo(expecSymb.radius as number);
expect(olCircle.getFill()?.getColor()).toEqual(expecSymb.color);
});
it('can write an OpenLayers PointSymbolizer with displacement', async () => {
let { output: olStyle } = await styleParser.writeStyle(point_simpleoffset);
olStyle = olStyle as OlStyle;
expect(olStyle).toBeDefined();

const expecSymb = point_simpleoffset.rules[0].symbolizers[0] as MarkSymbolizer;
const olCircle: OlStyleCircle = olStyle.getImage() as OlStyleCircle;

expect(olCircle).toBeDefined();
expect(olCircle.getDisplacement()).toEqual(expecSymb.offset);
});
it('can write an OpenLayers IconSymbolizer', async () => {
let { output: olStyle } = await styleParser.writeStyle(point_icon);
olStyle = olStyle as OlStyle;
Expand Down
2 changes: 1 addition & 1 deletion src/OlStyleParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1046,7 +1046,7 @@ export class OlStyleParser implements StyleParser<OlStyleLike> {
radius: radius ?? 5,
rotation: typeof(markSymbolizer.rotate) === 'number' ? markSymbolizer.rotate * Math.PI / 180 : undefined,
stroke: stroke,
displacement: typeof(markSymbolizer.offset) === 'number' ? markSymbolizer.offset : undefined
displacement: Array.isArray(markSymbolizer.offset) ? markSymbolizer.offset.map(Number) : undefined
};

switch (markSymbolizer.wellKnownName) {
Expand Down

0 comments on commit dc0ebfa

Please sign in to comment.