Skip to content

Commit 6510e9d

Browse files
author
Chris Vietor
committed
feat: added visibility layout property support to all layer types. added circle-pitch and circle-translate property support
1 parent e49dd53 commit 6510e9d

File tree

2 files changed

+93
-24
lines changed

2 files changed

+93
-24
lines changed

src/layers/layer-factory.android.ts

+45-8
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export class LayerFactory {
6969
line-translate ✓
7070
line-translate-anchor ✓
7171
line-width ✓
72-
visibility
72+
visibility
7373
*/
7474
const PropertyFactory = com.mapbox.mapboxsdk.style.layers.PropertyFactory;
7575
const Property = com.mapbox.mapboxsdk.style.layers.Property;
@@ -170,6 +170,10 @@ export class LayerFactory {
170170
lineProperties.push(PropertyFactory.lineWidth(new java.lang.Float(propertiesObject['line-width'])));
171171
}
172172

173+
if (propertiesObject['visibility']) {
174+
lineProperties.push(PropertyFactory.visibility(propertiesObject['visibility']));
175+
}
176+
173177
return lineProperties;
174178
}
175179

@@ -184,16 +188,16 @@ export class LayerFactory {
184188
circle-blur ✓
185189
circle-color ✓
186190
circle-opacity ✓
187-
circle-pitch-alignment
188-
circle-pitch-scale
191+
circle-pitch-alignment
192+
circle-pitch-scale
189193
circle-radius ✓
190194
circle-sort-key
191195
circle-stroke-color ✓
192196
circle-stroke-opacity ✓
193197
circle-stroke-width ✓
194-
circle-translate
195-
circle-translate-anchor
196-
visibility
198+
circle-translate
199+
circle-translate-anchor
200+
visibility
197201
*/
198202

199203
const PropertyFactory = com.mapbox.mapboxsdk.style.layers.PropertyFactory;
@@ -211,6 +215,14 @@ export class LayerFactory {
211215
circleProperties.push(PropertyFactory.circleOpacity(new java.lang.Float(propertiesObject['circle-opacity'])));
212216
}
213217

218+
if (propertiesObject['circle-pitch-alignment']) {
219+
circleProperties.push(PropertyFactory.circlePitchAlignment(propertiesObject['circle-pitch-alignment']));
220+
}
221+
222+
if (propertiesObject['circle-pitch-scale']) {
223+
circleProperties.push(PropertyFactory.circlePitchScale(propertiesObject['circle-pitch-scale']));
224+
}
225+
214226
if (propertiesObject['circle-radius']) {
215227
// we have two options for a radius. We might have a fixed float or an expression
216228

@@ -258,6 +270,23 @@ export class LayerFactory {
258270
circleProperties.push(PropertyFactory.circleStrokeWidth(new java.lang.Float(propertiesObject['circle-stroke-width'])));
259271
}
260272

273+
if (propertiesObject['circle-translate']) {
274+
const fillTranslateArray = Array.create('java.lang.Float', propertiesObject['circle-translate'].length);
275+
276+
for (let i = 0; i < propertiesObject['circle-translate'].length; i++) {
277+
fillTranslateArray[i] = new java.lang.Float(propertiesObject['circle-translate'][i]);
278+
}
279+
circleProperties.push(PropertyFactory.circleTranslate(fillTranslateArray));
280+
}
281+
282+
if (propertiesObject['circle-translate-anchor']) {
283+
circleProperties.push(PropertyFactory.circleTranslateAnchor(propertiesObject['circle-translate-anchor']));
284+
}
285+
286+
if (propertiesObject['visibility']) {
287+
circleProperties.push(PropertyFactory.visibility(propertiesObject['visibility']));
288+
}
289+
261290
return circleProperties;
262291
}
263292

@@ -277,7 +306,7 @@ export class LayerFactory {
277306
fill-sort-key
278307
fill-translate ✓
279308
fill-translate-anchor ✓
280-
visibility
309+
visibility
281310
*/
282311

283312
const PropertyFactory = com.mapbox.mapboxsdk.style.layers.PropertyFactory;
@@ -316,6 +345,10 @@ export class LayerFactory {
316345
fillProperties.push(PropertyFactory.fillTranslateAnchor(propertiesObject['fill-translate-anchor']));
317346
}
318347

348+
if (propertiesObject['visibility']) {
349+
fillProperties.push(PropertyFactory.visibility(propertiesObject['visibility']));
350+
}
351+
319352
return fillProperties;
320353
}
321354

@@ -382,7 +415,7 @@ export class LayerFactory {
382415
text-translate-anchor
383416
text-variable-anchor
384417
text-writing-mode
385-
visibility
418+
visibility
386419
*/
387420

388421
const PropertyFactory = com.mapbox.mapboxsdk.style.layers.PropertyFactory;
@@ -407,6 +440,10 @@ export class LayerFactory {
407440
symbolProperties.push(PropertyFactory.textField(propertiesObject['text-field']));
408441
}
409442

443+
if (propertiesObject['visibility']) {
444+
symbolProperties.push(PropertyFactory.visibility(propertiesObject['visibility']));
445+
}
446+
410447
return symbolProperties;
411448
}
412449
}

src/layers/layer-factory.ios.ts

+48-16
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class LayerFactory {
7575
line-translate ✓
7676
line-translate-anchor ✓
7777
line-width ✓
78-
visibility
78+
visibility
7979
*/
8080

8181
if (propertiesObject['line-blur']) {
@@ -130,6 +130,10 @@ export class LayerFactory {
130130
lineProperties['lineWidth'] = NSExpression.expressionForConstantValue(propertiesObject['line-width']);
131131
}
132132

133+
if (propertiesObject['visibility']) {
134+
lineProperties['visibility'] = NSExpression.expressionForConstantValue(propertiesObject['visibility']);
135+
}
136+
133137
return lineProperties;
134138
}
135139

@@ -144,16 +148,16 @@ export class LayerFactory {
144148
circle-blur ✓
145149
circle-color ✓
146150
circle-opacity ✓
147-
circle-pitch-alignment
148-
circle-pitch-scale
151+
circle-pitch-alignment
152+
circle-pitch-scale
149153
circle-radius ✓
150154
circle-sort-key
151155
circle-stroke-color ✓
152156
circle-stroke-opacity ✓
153157
circle-stroke-width ✓
154-
circle-translate
155-
circle-translate-anchor
156-
visibility
158+
circle-translate
159+
circle-translate-anchor
160+
visibility
157161
*/
158162

159163
if (propertiesObject['circle-blur']) {
@@ -168,6 +172,14 @@ export class LayerFactory {
168172
circleProperties['circleOpacity'] = NSExpression.expressionForConstantValue(propertiesObject['circle-opacity']);
169173
}
170174

175+
if (propertiesObject['circle-pitch-alignment']) {
176+
circleProperties['circlePitchAlignment'] = NSExpression.expressionForConstantValue(propertiesObject['circle-pitch-alignment']);
177+
}
178+
179+
if (propertiesObject['circle-pitch-scale']) {
180+
circleProperties['circleScaleAlignment'] = NSExpression.expressionForConstantValue(propertiesObject['circle-pitch-scale']);
181+
}
182+
171183
if (propertiesObject['circle-radius']) {
172184
if (typeof propertiesObject['circle-radius'] !== 'number') {
173185
throw new Error('Unsupported circle-radius type'); // TODO: Implement circle radius with stops
@@ -187,6 +199,18 @@ export class LayerFactory {
187199
circleProperties['circleStrokeWidth'] = NSExpression.expressionForConstantValue(propertiesObject['circle-stroke-width']);
188200
}
189201

202+
if (propertiesObject['circle-translate']) {
203+
circleProperties['circleTranslation'] = NSExpression.expressionForConstantValue(propertiesObject['circle-translate']);
204+
}
205+
206+
if (propertiesObject['circle-translate-anchor']) {
207+
circleProperties['circleTranslationAnchor'] = NSExpression.expressionForConstantValue(propertiesObject['circle-translate-anchor']);
208+
}
209+
210+
if (propertiesObject['visibility']) {
211+
circleProperties['visibility'] = NSExpression.expressionForConstantValue(propertiesObject['visibility']);
212+
}
213+
190214
return circleProperties;
191215
}
192216

@@ -206,7 +230,7 @@ export class LayerFactory {
206230
fill-sort-key
207231
fill-translate ✓
208232
fill-translate-anchor ✓
209-
visibility
233+
visibility
210234
*/
211235

212236
if (propertiesObject['fill-antialias']) {
@@ -237,14 +261,18 @@ export class LayerFactory {
237261
fillProperties['fillTranslationAnchor'] = NSExpression.expressionForConstantValue(propertiesObject['fill-translate-anchor']);
238262
}
239263

264+
if (propertiesObject['visibility']) {
265+
fillProperties['visibility'] = NSExpression.expressionForConstantValue(propertiesObject['visibility']);
266+
}
267+
240268
return fillProperties;
241269
}
242270

243271
private static parsePropertiesForSymbolLayer(propertiesObject) {
244-
const fillProperties = {};
272+
const symbolProperties = {};
245273

246274
if (!propertiesObject) {
247-
return fillProperties;
275+
return symbolProperties;
248276
}
249277

250278
/*
@@ -303,29 +331,33 @@ export class LayerFactory {
303331
text-translate-anchor
304332
text-variable-anchor
305333
text-writing-mode
306-
visibility
334+
visibility
307335
*/
308336

309337
if (propertiesObject['icon-image']) {
310-
fillProperties['iconImageName'] = NSExpression.expressionForConstantValue(propertiesObject['icon-image']);
338+
symbolProperties['iconImageName'] = NSExpression.expressionForConstantValue(propertiesObject['icon-image']);
311339
}
312340

313341
if (propertiesObject['icon-rotate']) {
314-
fillProperties['iconRotation'] = NSExpression.expressionForConstantValue(propertiesObject['icon-rotate']);
342+
symbolProperties['iconRotation'] = NSExpression.expressionForConstantValue(propertiesObject['icon-rotate']);
315343
}
316344

317345
if (propertiesObject['icon-size']) {
318-
fillProperties['iconScale'] = NSExpression.expressionForConstantValue(propertiesObject['icon-size']);
346+
symbolProperties['iconScale'] = NSExpression.expressionForConstantValue(propertiesObject['icon-size']);
319347
}
320348

321349
if (propertiesObject['text-color']) {
322-
fillProperties['textColor'] = NSExpression.expressionForConstantValue(new Color(propertiesObject['text-color']).ios);
350+
symbolProperties['textColor'] = NSExpression.expressionForConstantValue(new Color(propertiesObject['text-color']).ios);
323351
}
324352

325353
if (propertiesObject['text-field']) {
326-
fillProperties['text'] = NSExpression.expressionForConstantValue(propertiesObject['text-field']);
354+
symbolProperties['text'] = NSExpression.expressionForConstantValue(propertiesObject['text-field']);
327355
}
328356

329-
return fillProperties;
357+
if (propertiesObject['visibility']) {
358+
symbolProperties['visibility'] = NSExpression.expressionForConstantValue(propertiesObject['visibility']);
359+
}
360+
361+
return symbolProperties;
330362
}
331363
}

0 commit comments

Comments
 (0)