@nativescript-community/ui-mapbox 7.0.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [7.0.1](https://github.com/nativescript-community/ui-mapbox/compare/v7.0.0...v7.0.1) (2025-10-28)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **ios:** missing options and improvements ([3d4cedd](https://github.com/nativescript-community/ui-mapbox/commit/3d4cedd92761445ab7293668d2b22e8767f73cce))
11
+
6
12
  ## [7.0.0](https://github.com/nativescript-community/ui-mapbox/compare/v6.2.31...v7.0.0) (2025-10-25)
7
13
 
8
14
  ### Features
@@ -427,11 +427,11 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
427
427
  *
428
428
  * @todo at least with simulated data, the location is only updated once hence adding support for forceLocation method.
429
429
  */
430
- showUserLocationMarker(options: TrackUserOptions & {
431
- accuracyColor: any;
432
- accuracyRingColor: any;
433
- pulsingColor: any;
434
- }, nativeMap?: any): Promise<void>;
430
+ showUserLocationMarker(options: Partial<TrackUserOptions & {
431
+ accuracyColor?: any;
432
+ accuracyRingColor?: any;
433
+ pulsingColor?: any;
434
+ }>, nativeMap?: any): Promise<void>;
435
435
  /**
436
436
  * hide (destroy) the user location marker
437
437
  *
package/index.android.js CHANGED
@@ -115,6 +115,9 @@ export class MapboxView extends MapboxViewBase {
115
115
  * programmatically include settings
116
116
  */
117
117
  setConfig(settings) {
118
+ if (Trace.isEnabled()) {
119
+ CLog(CLogTypes.info, 'setConfig()');
120
+ }
118
121
  // zoom level is not applied unless center is set
119
122
  if (settings.zoomLevel && !settings.center) {
120
123
  // Eiffel tower, Paris
@@ -220,13 +223,14 @@ export class MapboxView extends MapboxViewBase {
220
223
  * @todo FIXME: this.nativeMapView is unused and never actually set to anything.
221
224
  */
222
225
  async initMap() {
226
+ const accessToken = this.config?.accessToken ?? this.settings?.accessToken;
223
227
  if (Trace.isEnabled()) {
224
- CLog(CLogTypes.info, "MapboxView:initMap(): top - accessToken is '" + this.config.accessToken + "'", this.config);
228
+ CLog(CLogTypes.info, "MapboxView:initMap(): top - accessToken is '" + accessToken + "'", this.config);
225
229
  }
226
- if (!this.config.accessToken) {
230
+ if (!accessToken) {
227
231
  throw new Error('missing accessToken');
228
232
  }
229
- if (!this.nativeMapView && ((this.config && this.config.accessToken) || (this.settings && this.settings.accessToken))) {
233
+ if (!this.nativeMapView) {
230
234
  this.mapbox = new Mapbox(this);
231
235
  // the NativeScript contentview class extends from Observable to provide the notify method
232
236
  // which is the glue that joins this code with whatever callbacks are set in the Mapbox XML
@@ -2573,23 +2577,14 @@ export class Mapbox extends MapboxCommon {
2573
2577
  if (Trace.isEnabled()) {
2574
2578
  CLog(CLogTypes.info, 'trackUser(): top');
2575
2579
  }
2576
- return new Promise((resolve, reject) => {
2580
+ return new Promise(async (resolve, reject) => {
2577
2581
  try {
2578
2582
  if (!this._mapboxMapInstance) {
2579
2583
  reject('No map has been loaded');
2580
2584
  return;
2581
2585
  }
2582
- this.requestFineLocationPermission()
2583
- .then(() => {
2584
- // if (this._locationComponent) {
2585
- // this.changeUserLocationMarkerMode(options.renderMode || 'COMPASS', options.cameraMode || 'TRACKING');
2586
- // } else {
2587
- this.showUserLocationMarker(options);
2588
- // }
2589
- })
2590
- .catch((err) => {
2591
- console.error('Location permission denied. error:', err);
2592
- });
2586
+ await this.requestFineLocationPermission();
2587
+ this.showUserLocationMarker(options, nativeMap);
2593
2588
  resolve();
2594
2589
  }
2595
2590
  catch (ex) {
@@ -2846,64 +2841,6 @@ export class Mapbox extends MapboxCommon {
2846
2841
  return settings;
2847
2842
  }
2848
2843
  }));
2849
- // if (typeof options.elevation != 'undefined') {
2850
- // componentOptionsBuilder = componentOptionsBuilder.elevation(options.elevation);
2851
- // }
2852
- // if (typeof options.accuracyAlpha != 'undefined') {
2853
- // componentOptionsBuilder = componentOptionsBuilder.accuracyAlpha(options.accuracyAlpha);
2854
- // }
2855
- // if (typeof options.foregroundTintColor != 'undefined') {
2856
- // const foregroundTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.foregroundTintColor));
2857
- // componentOptionsBuilder = componentOptionsBuilder.foregroundTintColor(foregroundTintColor);
2858
- // }
2859
- // if (typeof options.foregroundStaleTintColor != 'undefined') {
2860
- // const foregroundStaleTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.foregroundStaleTintColor));
2861
- // componentOptionsBuilder = componentOptionsBuilder.foregroundStaleTintColor(foregroundStaleTintColor);
2862
- // }
2863
- // if (typeof options.backgroundTintColor != 'undefined') {
2864
- // const backgroundTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.backgroundTintColor));
2865
- // componentOptionsBuilder = componentOptionsBuilder.backgroundTintColor(backgroundTintColor);
2866
- // }
2867
- // if (typeof options.bearingTintColor != 'undefined') {
2868
- // const bearingTintColor = new java.lang.Integer(android.graphics.Color.parseColor(options.bearingTintColor));
2869
- // componentOptionsBuilder = componentOptionsBuilder.bearingTintColor(bearingTintColor);
2870
- // }
2871
- // const componentOptions = componentOptionsBuilder.build();
2872
- // this._locationComponent = this._mapboxMapInstance.getLocationComponent();
2873
- // const activationOptionsBuilder = com.mapbox.maps.location.LocationComponentActivationOptions.builder(Utils.android.getApplicationContext(), this._mapboxMapInstance.getStyle());
2874
- // activationOptionsBuilder.locationComponentOptions(componentOptions);
2875
- // let useDefaultEngine = true;
2876
- // if (typeof options.useDefaultLocationEngine != 'undefined') {
2877
- // useDefaultEngine = options.useDefaultLocationEngine;
2878
- // }
2879
- // activationOptionsBuilder.useDefaultLocationEngine(useDefaultEngine);
2880
- // const locationComponentActivationOptions = activationOptionsBuilder.build();
2881
- // this._locationComponent.activateLocationComponent(locationComponentActivationOptions);
2882
- // this._locationComponent.setLocationComponentEnabled(true);
2883
- // let cameraMode = this._stringToCameraMode('TRACKING');
2884
- // if (typeof options.cameraMode != 'undefined') {
2885
- // cameraMode = this._stringToCameraMode(options.cameraMode);
2886
- // }
2887
- // this._locationComponent.setCameraMode(cameraMode);
2888
- // let renderMode = com.mapbox.maps.location.modes.RenderMode.COMPASS;
2889
- // if (typeof options.renderMode != 'undefined') {
2890
- // renderMode = this._stringToRenderMode(options.renderMode);
2891
- // }
2892
- // this._locationComponent.setRenderMode(renderMode);
2893
- // if (Trace.isEnabled()) {
2894
- // CLog(CLogTypes.info, 'showUserLocationMarker(): after renderMode');
2895
- // }
2896
- // if (typeof options.clickListener != 'undefined') {
2897
- // this.onLocationClickListener = new com.mapbox.maps.location.OnLocationClickListener({
2898
- // onLocationComponentClick: () => {
2899
- // options.clickListener();
2900
- // }
2901
- // });
2902
- // this._locationComponent.addOnLocationClickListener(this.onLocationClickListener);
2903
- // }
2904
- // if (typeof options.cameraTrackingChangedListener != 'undefined') {
2905
- // this._locationComponent.addOnCameraTrackingChangedListener(options.cameraTrackingChangedListener);
2906
- // }
2907
2844
  }
2908
2845
  catch (ex) {
2909
2846
  if (Trace.isEnabled()) {
@@ -2959,7 +2896,7 @@ export class Mapbox extends MapboxCommon {
2959
2896
  return new Promise((resolve, reject) => {
2960
2897
  try {
2961
2898
  if (Trace.isEnabled()) {
2962
- CLog(CLogTypes.info, 'showUserLocationMarker()');
2899
+ CLog(CLogTypes.info, 'changeUserLocationMarkerMode()');
2963
2900
  }
2964
2901
  if (!this._mapboxMapInstance) {
2965
2902
  throw new Error('No map has been loaded');
package/index.ios.d.ts CHANGED
@@ -86,7 +86,7 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
86
86
  downloadOfflineRegion(options: DownloadOfflineRegionOptions, nativeMap?: any): Promise<void>;
87
87
  listOfflineRegions(options?: ListOfflineRegionsOptions, nativeMap?: any): Promise<OfflineRegion[]>;
88
88
  deleteOfflineRegion(options: DeleteOfflineRegionOptions, nativeMap?: any): Promise<void>;
89
- showUserLocationMarker(show: boolean): Promise<void>;
89
+ showUserLocationMarker(options: Partial<TrackUserOptions>): Promise<void>;
90
90
  hideUserLocationMarker(nativeMap?: any): Promise<void>;
91
91
  forceUserLocationUpdate(nativeMap?: any): Promise<boolean>;
92
92
  trackUser(options: TrackUserOptions, nativeMap?: any): Promise<void>;
package/index.ios.js CHANGED
@@ -110,8 +110,12 @@ export class MapboxView extends MapboxViewBase {
110
110
  this.initCountHack = 50;
111
111
  }
112
112
  setConfig(settings) {
113
- if (Trace.isEnabled()) {
114
- CLog(CLogTypes.info, 'setConfig(): settings:', settings);
113
+ if (settings.zoomLevel && !settings.center) {
114
+ // Eiffel tower, Paris
115
+ settings.center = {
116
+ lat: 48.858093,
117
+ lng: 2.294694
118
+ };
115
119
  }
116
120
  this.settings = settings;
117
121
  }
@@ -150,7 +154,7 @@ export class MapboxView extends MapboxViewBase {
150
154
  }
151
155
  initMap() {
152
156
  if (Trace.isEnabled()) {
153
- CLog(CLogTypes.info, 'initMap() top with settings:', this.settings);
157
+ CLog(CLogTypes.info, 'initMap() top');
154
158
  }
155
159
  if (!this.settings && !this.config.accessToken) {
156
160
  if (this.initCountHack > 50)
@@ -398,6 +402,9 @@ export class Mapbox extends MapboxCommon {
398
402
  // setTimeout(() => view.addSubview(nativeMap), 0);
399
403
  view.addSubview(nativeMap);
400
404
  this.setMapboxViewInstance(nativeMap);
405
+ if (settings.showUserLocation) {
406
+ this.showUserLocationMarker({});
407
+ }
401
408
  this.initEventHandlerShim(settings, this._mapboxViewInstance);
402
409
  if (settings.onMapReady) {
403
410
  settings.onMapReady(this._mapboxViewInstance);
@@ -1503,7 +1510,7 @@ export class Mapbox extends MapboxCommon {
1503
1510
  });
1504
1511
  }
1505
1512
  // ---------------- User location & tilt ----------------
1506
- showUserLocationMarker(show) {
1513
+ showUserLocationMarker(options) {
1507
1514
  return new Promise((resolve, reject) => {
1508
1515
  try {
1509
1516
  const b = this.bridgeInstance;
@@ -1511,7 +1518,7 @@ export class Mapbox extends MapboxCommon {
1511
1518
  reject('No bridge available');
1512
1519
  return;
1513
1520
  }
1514
- b.showUserLocationMarker(show);
1521
+ b.showUserLocationMarker(JSON.stringify(options));
1515
1522
  resolve();
1516
1523
  }
1517
1524
  catch (ex) {
@@ -1562,7 +1569,7 @@ export class Mapbox extends MapboxCommon {
1562
1569
  if (Trace.isEnabled()) {
1563
1570
  CLog(CLogTypes.info, 'trackUser():', JSON.stringify(options));
1564
1571
  }
1565
- const ok = b.trackUser(JSON.stringify(options));
1572
+ const ok = b.showUserLocationMarker(JSON.stringify(options));
1566
1573
  if (ok) {
1567
1574
  resolve();
1568
1575
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nativescript-community/ui-mapbox",
3
- "version": "7.0.0",
3
+ "version": "7.0.1",
4
4
  "description": "Interactive, thoroughly customizable maps powered by vector tiles and OpenGL.",
5
5
  "main": "index",
6
6
  "typings": "index.d.ts",
@@ -55,5 +55,5 @@
55
55
  "dependencies": {
56
56
  "@nativescript-community/perms": "^3.0.4"
57
57
  },
58
- "gitHead": "7975da7394c6777e5a43c15f34c706803201f728"
58
+ "gitHead": "c775cf24ff6f702e028f9a4fe2d562a863281eb5"
59
59
  }
@@ -176,10 +176,11 @@ public class MapboxBridge: NSObject {
176
176
  @objc public func createMap(_ x: Double, _ y: Double, _ width: Double, _ height: Double, _ accessToken: String, _ styleURIString: String?, _ optionsJSON: String) -> UIView {
177
177
  MapboxOptions.accessToken = accessToken
178
178
  let styleURI = getMapStyleURI(styleURIString)
179
-
179
+ let optionsOpt = MapboxBridge.parseJSONParameter(optionsJSON) as? [String: Any]
180
+
180
181
  var centerCoordinate = CLLocationCoordinate2D(latitude: 48.858093, longitude: 2.294694)
181
182
  var zoom = 0.0
182
- if let options = MapboxBridge.parseJSONParameter(optionsJSON) as? [String: Any] {
183
+ if let options = optionsOpt {
183
184
  if let z = options["zoomLevel"] as? Double {
184
185
  zoom = z
185
186
  }
@@ -202,6 +203,31 @@ public class MapboxBridge: NSObject {
202
203
  MapboxBridge.registerBridge(self, for: mv)
203
204
 
204
205
  addImage("default_pin", image: UIImage(named: "default_pin"))
206
+
207
+ if let options = optionsOpt {
208
+ if ((options["hideLogo"] as? Bool) == true) {
209
+ mv.ornaments.logoView.isHidden = true
210
+ }
211
+ if ((options["hideAttribution"] as? Bool) == true) {
212
+ mv.ornaments.attributionButton.isHidden = true
213
+ }
214
+ if ((options["hideCompass"] as? Bool) == true) {
215
+ mv.ornaments.compassView.isHidden = true
216
+ }
217
+ if ((options["disableRotation"] as? Bool) == true) {
218
+ mv.gestures.options.rotateEnabled = false
219
+ }
220
+ if ((options["disableScroll"] as? Bool) == true) {
221
+ mv.gestures.options.panEnabled = false
222
+ }
223
+ if ((options["disableZoom"] as? Bool) == true) {
224
+ mv.gestures.options.pinchZoomEnabled = false
225
+ mv.gestures.options.quickZoomEnabled = false
226
+ }
227
+ if ((options["disableTilt"] as? Bool) == true) {
228
+ mv.gestures.options.pitchEnabled = false
229
+ }
230
+ }
205
231
 
206
232
  // mapLoaded
207
233
  mv.mapboxMap.onMapLoaded.observeNext { _ in
@@ -1162,7 +1188,7 @@ public class MapboxBridge: NSObject {
1162
1188
  }
1163
1189
 
1164
1190
 
1165
- @objc public func trackUser(_ optionsJSON: String) -> Bool {
1191
+ @objc public func showUserLocationMarker(_ optionsJSON: String) -> Bool {
1166
1192
  guard let mv = mapView else { return false }
1167
1193
 
1168
1194
  guard let data = optionsJSON.data(using: .utf8),
@@ -1 +1 @@
1
- {"root":["../../src/ui-mapbox/common.ts","../../src/ui-mapbox/geo.utils.ts","../../src/ui-mapbox/index.android.ts","../../src/ui-mapbox/index.d.ts","../../src/ui-mapbox/index.ios.ts","../../src/ui-mapbox/references.d.ts","../../src/ui-mapbox/expression/expression-parser.android.ts","../../src/ui-mapbox/expression/expression-parser.d.ts","../../src/ui-mapbox/expression/expression-parser.ios.ts","../../src/ui-mapbox/layers/layer-factory.android.ts","../../src/ui-mapbox/layers/layer-factory.d.ts","../../src/ui-mapbox/layers/layer-factory.ios.ts","../../src/ui-mapbox/layers/parser/property-parser.android.ts","../../src/ui-mapbox/layers/parser/property-parser.d.ts","../../src/ui-mapbox/layers/parser/property-parser.ios.ts","../../src/ui-mapbox/markers/marker.android.ts","../../src/ui-mapbox/markers/marker.common.ts","../../src/ui-mapbox/markers/markermanager.android.ts","../../src/ui-mapbox/typings/mapbox.ios.d.ts","../../src/ui-mapbox/typings/geojson.android.d.ts","../../src/ui-mapbox/typings/index.android.d.ts","../../src/ui-mapbox/typings/mapbox.android.d.ts","../../src/ui-mapbox/typings/mapbox.bridge.ios.d.ts","../../references.d.ts","../../tools/references.d.ts"],"version":"5.8.3"}
1
+ {"root":["../../src/ui-mapbox/common.ts","../../src/ui-mapbox/geo.utils.ts","../../src/ui-mapbox/index.android.ts","../../src/ui-mapbox/index.d.ts","../../src/ui-mapbox/index.ios.ts","../../src/ui-mapbox/references.d.ts","../../src/ui-mapbox/expression/expression-parser.android.ts","../../src/ui-mapbox/expression/expression-parser.d.ts","../../src/ui-mapbox/expression/expression-parser.ios.ts","../../src/ui-mapbox/layers/layer-factory.android.ts","../../src/ui-mapbox/layers/layer-factory.d.ts","../../src/ui-mapbox/layers/layer-factory.ios.ts","../../src/ui-mapbox/layers/parser/property-parser.android.ts","../../src/ui-mapbox/layers/parser/property-parser.d.ts","../../src/ui-mapbox/layers/parser/property-parser.ios.ts","../../src/ui-mapbox/markers/Marker.android.ts","../../src/ui-mapbox/markers/Marker.common.ts","../../src/ui-mapbox/markers/MarkerManager.android.ts","../../src/ui-mapbox/typings/Mapbox.ios.d.ts","../../src/ui-mapbox/typings/geojson.android.d.ts","../../src/ui-mapbox/typings/index.android.d.ts","../../src/ui-mapbox/typings/mapbox.android.d.ts","../../src/ui-mapbox/typings/mapbox.bridge.ios.d.ts","../../references.d.ts","../../tools/references.d.ts"],"version":"5.8.3"}