Skip to content

Commit c81b4d1

Browse files
committed
feat: (android) color support for LocationComponent
1 parent 1812e00 commit c81b4d1

File tree

2 files changed

+49
-64
lines changed

2 files changed

+49
-64
lines changed

demo/app/main-view-model.ts

+21-60
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ const isIOS = platform.Device.os === platform.platformNames.ios;
1111

1212
const ACCESS_TOKEN = SETTINGS.mapbox_access_token;
1313

14-
// -------------------------------------------------------------------------------
15-
1614
export class HelloWorldModel extends Observable {
1715
private mapboxView: MapboxView;
1816
private mapbox: Mapbox;
@@ -22,8 +20,6 @@ export class HelloWorldModel extends Observable {
2220
console.log('HelloWorldModel::constructor()');
2321
}
2422

25-
// --------------------------------------------------------------------
26-
2723
/**
2824
* show a map programmatically
2925
*/
@@ -128,8 +124,6 @@ export class HelloWorldModel extends Observable {
128124
contentView.content = mapView;
129125
}
130126

131-
// -------------------------------------------------------------------------------
132-
133127
public doHide(): void {
134128
this.mapbox.hide().then(
135129
() => {
@@ -141,8 +135,6 @@ export class HelloWorldModel extends Observable {
141135
);
142136
}
143137

144-
// -------------------------------------------------------------------------------
145-
146138
public doDestroy(): void {
147139
this.mapbox.destroy().then(
148140
() => {
@@ -154,8 +146,6 @@ export class HelloWorldModel extends Observable {
154146
);
155147
}
156148

157-
// -------------------------------------------------------------------------------
158-
159149
public doUnhide(): void {
160150
this.mapbox.unhide().then(
161151
() => {
@@ -167,26 +157,20 @@ export class HelloWorldModel extends Observable {
167157
);
168158
}
169159

170-
// -------------------------------------------------------------------------------
171-
172160
public doRemoveAllMarkers(): void {
173161
this.mapbox.removeMarkers().then(
174162
() => console.log('Mapbox doRemoveAllMarkers done'),
175163
(error) => console.log('mapbox doRemoveAllMarkers error: ' + error)
176164
);
177165
}
178166

179-
// -------------------------------------------------------------------------------
180-
181167
public doRemove2Markers(): void {
182168
this.mapbox.removeMarkers([2, 3]).then(
183169
() => console.log('Mapbox doRemove2Markers done'),
184170
(error) => console.log('mapbox doRemove2Markers error: ' + error)
185171
);
186172
}
187173

188-
// -------------------------------------------------------------------------------
189-
190174
public doAddMarkers(): void {
191175
const onTap = (marker: MapboxMarker) => console.log(`Marker tapped with title: ${marker.title}`);
192176

@@ -266,8 +250,6 @@ export class HelloWorldModel extends Observable {
266250
);
267251
}
268252

269-
// -------------------------------------------------------------------------------
270-
271253
public doGetViewport(): void {
272254
this.mapbox.getViewport().then(
273255
(result: Viewport) => {
@@ -282,8 +264,6 @@ export class HelloWorldModel extends Observable {
282264
);
283265
}
284266

285-
// -------------------------------------------------------------------------------
286-
287267
public doSetViewport(): void {
288268
this.mapbox
289269
.setViewport({
@@ -301,8 +281,6 @@ export class HelloWorldModel extends Observable {
301281
);
302282
}
303283

304-
// -------------------------------------------------------------------------------
305-
306284
// Add an option to download the current viewport: https://www.mapbox.com/ios-sdk/examples/offline-pack/ (look for visibleCoordinateBounds)
307285

308286
public doDownloadAmsterdam(): void {
@@ -345,8 +323,6 @@ export class HelloWorldModel extends Observable {
345323
alert(alertOptions);
346324
}
347325

348-
// -------------------------------------------------------------------------------
349-
350326
public doDownloadCurrentViewportAsOfflineRegion(): void {
351327
this.mapbox.getViewport().then(
352328
(viewport: Viewport) => {
@@ -533,7 +509,7 @@ export class HelloWorldModel extends Observable {
533509
type: 'LineString',
534510
coordinates: [
535511
[4.8209381103515625, 52.28769256200232],
536-
[4.8085784912109375, 52.27572040360819]
512+
[4.8085784912109375, 52.27572040360819],
537513
],
538514
},
539515
},
@@ -738,8 +714,6 @@ export class HelloWorldModel extends Observable {
738714
);
739715
}
740716

741-
// -------------------------------------------------------------------------------
742-
743717
public doGetTilt(): void {
744718
this.mapbox.getTilt().then(
745719
(result: number) => {
@@ -756,26 +730,29 @@ export class HelloWorldModel extends Observable {
756730
);
757731
}
758732

759-
// -------------------------------------------------------------------------------
760-
761733
public doGetUserLocation(): void {
762-
this.mapbox.getUserLocation().then(
763-
(location) => {
764-
const alertOptions: AlertOptions = {
765-
title: 'User location',
766-
message: JSON.stringify(location),
767-
okButtonText: 'Thanks!',
768-
};
769-
alert(alertOptions);
770-
},
771-
(error: string) => {
734+
this.mapbox
735+
.showUserLocationMarker({
736+
foregroundTintColor: '#089e00',
737+
foregroundStaleTintColor: '#fac878',
738+
backgroundTintColor: '#eb81d5',
739+
bearingTintColor: '#02db3c'
740+
})
741+
.then(() => {
742+
this.mapbox.getUserLocation().then((loc) => {
743+
const alertOptions: AlertOptions = {
744+
title: 'User location',
745+
message: JSON.stringify(loc),
746+
okButtonText: 'Thanks!',
747+
};
748+
alert(alertOptions);
749+
});
750+
})
751+
.catch((error: string) => {
772752
console.log('mapbox getUserLocation error: ' + error);
773-
}
774-
);
753+
});
775754
}
776755

777-
// -------------------------------------------------------------------------------
778-
779756
public doTrackUser(): void {
780757
this.mapbox
781758
.trackUser({
@@ -785,8 +762,6 @@ export class HelloWorldModel extends Observable {
785762
.then(() => console.log('Following User'));
786763
}
787764

788-
// -------------------------------------------------------------------------------
789-
790765
public doSetTilt(): void {
791766
this.mapbox
792767
.setTilt({
@@ -803,8 +778,6 @@ export class HelloWorldModel extends Observable {
803778
);
804779
}
805780

806-
// -------------------------------------------------------------------------------
807-
808781
public doAnimateCamera(): void {
809782
this.mapbox
810783
.animateCamera({
@@ -828,8 +801,6 @@ export class HelloWorldModel extends Observable {
828801
);
829802
}
830803

831-
// -------------------------------------------------------------------------------
832-
833804
public doSetCenter(): void {
834805
this.mapbox
835806
.setCenter({
@@ -847,8 +818,6 @@ export class HelloWorldModel extends Observable {
847818
);
848819
}
849820

850-
// -------------------------------------------------------------------------------
851-
852821
public doGetCenter(): void {
853822
this.mapbox.getCenter().then(
854823
(result: LatLng) => {
@@ -865,8 +834,6 @@ export class HelloWorldModel extends Observable {
865834
);
866835
}
867836

868-
// -------------------------------------------------------------------------------
869-
870837
public doGetZoomLevel(): void {
871838
this.mapbox.getZoomLevel().then(
872839
(result: number) => {
@@ -883,8 +850,6 @@ export class HelloWorldModel extends Observable {
883850
);
884851
}
885852

886-
// -------------------------------------------------------------------------------
887-
888853
public doSetZoomLevel(): void {
889854
this.mapbox
890855
.setZoomLevel({
@@ -901,8 +866,6 @@ export class HelloWorldModel extends Observable {
901866
);
902867
}
903868

904-
// -------------------------------------------------------------------------------
905-
906869
public doCheckHasFineLocationPermission(): void {
907870
this.mapbox.hasFineLocationPermission().then((granted: boolean) => {
908871
const alertOptions: AlertOptions = {
@@ -914,9 +877,7 @@ export class HelloWorldModel extends Observable {
914877
});
915878
}
916879

917-
// -------------------------------------------------------------------------------
918-
919-
public doRequestFineLocationPermission(): void {
880+
public doRequestFineLocationPermission(): void {
920881
this.mapbox.requestFineLocationPermission().then(() => {
921882
console.log('Fine Location permission requested');
922883
});

src/mapbox.android.ts

+28-4
Original file line numberDiff line numberDiff line change
@@ -2759,6 +2759,10 @@ export class Mapbox extends MapboxCommon implements MapboxApi {
27592759
*
27602760
* Supported options are:
27612761
*
2762+
* - foregroundTintColor
2763+
* - foregroundStaleTintColor
2764+
* - backgroundTintColor
2765+
* - bearingTintColor
27622766
* - elevation
27632767
* - accuracyColor
27642768
* - accuracyAlpha
@@ -2796,18 +2800,38 @@ export class Mapbox extends MapboxCommon implements MapboxApi {
27962800
return;
27972801
}
27982802

2799-
const componentOptionsBuilder = com.mapbox.mapboxsdk.location.LocationComponentOptions.builder(Application.android.context);
2803+
let componentOptionsBuilder = com.mapbox.mapboxsdk.location.LocationComponentOptions.builder(Application.android.context);
28002804

28012805
if (typeof options.elevation != 'undefined') {
2802-
componentOptionsBuilder.elevation(options.elevation);
2806+
componentOptionsBuilder = componentOptionsBuilder.elevation(options.elevation);
28032807
}
28042808

28052809
if (typeof options.accuracyColor != 'undefined') {
2806-
componentOptionsBuilder.accuracyColor(android.graphics.Color.parseColor(options.accuracyColor));
2810+
componentOptionsBuilder = componentOptionsBuilder.accuracyColor(android.graphics.Color.parseColor(options.accuracyColor));
28072811
}
28082812

28092813
if (typeof options.accuracyAlpha != 'undefined') {
2810-
componentOptionsBuilder.accuracyAlpha(options.accuracyAlpha);
2814+
componentOptionsBuilder = componentOptionsBuilder.accuracyAlpha(options.accuracyAlpha);
2815+
}
2816+
2817+
if (typeof options.foregroundTintColor != 'undefined') {
2818+
const foregroundTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.foregroundTintColor));
2819+
componentOptionsBuilder = componentOptionsBuilder.foregroundTintColor(foregroundTintColor);
2820+
}
2821+
2822+
if (typeof options.foregroundStaleTintColor != 'undefined') {
2823+
const foregroundStaleTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.foregroundStaleTintColor));
2824+
componentOptionsBuilder = componentOptionsBuilder.foregroundStaleTintColor(foregroundStaleTintColor);
2825+
}
2826+
2827+
if (typeof options.backgroundTintColor != 'undefined') {
2828+
const backgroundTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.backgroundTintColor));
2829+
componentOptionsBuilder = componentOptionsBuilder.backgroundTintColor(backgroundTintColor);
2830+
}
2831+
2832+
if (typeof options.bearingTintColor != 'undefined') {
2833+
const bearingTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.bearingTintColor));
2834+
componentOptionsBuilder = componentOptionsBuilder.bearingTintColor(bearingTintColor);
28112835
}
28122836

28132837
const componentOptions = componentOptionsBuilder.build();

0 commit comments

Comments
 (0)