@nativescript-community/ui-mapbox 6.2.10 → 6.2.14

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +199 -99
  3. package/{mapbox.common.d.ts → common.d.ts} +42 -4
  4. package/{mapbox.common.js → common.js} +21 -1
  5. package/{filter/filter-parser.android.d.ts → expression/expression-parser.android.d.ts} +1 -1
  6. package/{filter/filter-parser.android.js → expression/expression-parser.android.js} +2 -2
  7. package/expression/expression-parser.d.ts +4 -0
  8. package/{filter/filter-parser.ios.d.ts → expression/expression-parser.ios.d.ts} +1 -1
  9. package/{filter/filter-parser.ios.js → expression/expression-parser.ios.js} +2 -2
  10. package/{mapbox.android.d.ts → index.android.d.ts} +9 -14
  11. package/{mapbox.android.js → index.android.js} +152 -65
  12. package/index.d.ts +99 -6
  13. package/{mapbox.ios.d.ts → index.ios.d.ts} +7 -30
  14. package/{mapbox.ios.js → index.ios.js} +1977 -1912
  15. package/layers/layer-factory.android.d.ts +15 -1
  16. package/layers/layer-factory.android.js +63 -2
  17. package/layers/layer-factory.d.ts +17 -2
  18. package/layers/layer-factory.ios.d.ts +15 -1
  19. package/layers/layer-factory.ios.js +72 -2
  20. package/layers/parser/property-parser.android.d.ts +1 -0
  21. package/layers/parser/property-parser.android.js +25 -0
  22. package/layers/parser/property-parser.d.ts +4 -0
  23. package/layers/parser/property-parser.ios.d.ts +1 -0
  24. package/layers/parser/property-parser.ios.js +21 -0
  25. package/package.json +55 -49
  26. package/platforms/android/include.gradle +3 -0
  27. package/platforms/android/ui_mapbox.aar +0 -0
  28. package/platforms/ios/Podfile +2 -2
  29. package/typings/Mapbox.ios.d.ts +2 -0
  30. package/LICENSE +0 -21
@@ -1,4 +1,4 @@
1
- export declare class FilterParser {
1
+ export declare class ExpressionParser {
2
2
  static parseJson(json: any[]): NSPredicate;
3
3
  static toJson(filter: NSPredicate): any[];
4
4
  }
@@ -1,4 +1,4 @@
1
- export class FilterParser {
1
+ export class ExpressionParser {
2
2
  static parseJson(json) {
3
3
  const filterStr = NSString.stringWithString(JSON.stringify(json));
4
4
  const filterData = filterStr.dataUsingEncoding(NSUTF8StringEncoding);
@@ -19,4 +19,4 @@ export class FilterParser {
19
19
  return JSON.parse(expression);
20
20
  }
21
21
  }
22
- //# sourceMappingURL=filter-parser.ios.js.map
22
+ //# sourceMappingURL=expression-parser.ios.js.map
@@ -1,6 +1,6 @@
1
1
  import { ImageSource } from '@nativescript/core';
2
- import { AddExtrusionOptions, AddGeoJsonClusteredOptions, AddPolygonOptions, AddPolylineOptions, AddSourceOptions, AnimateCameraOptions, DeleteOfflineRegionOptions, DownloadOfflineRegionOptions, Feature, LatLng, LayerCommon, ListOfflineRegionsOptions, MapStyle, MapboxApi, MapboxCommon, MapboxMarker, MapboxTraceCategory, MapboxViewBase, OfflineRegion, QueryRenderedFeaturesOptions, QuerySourceFeaturesOptions, SetCenterOptions, SetTiltOptions, SetViewportOptions, SetZoomLevelOptions, ShowOptions, TrackUserOptions, UpdateSourceOptions, UserLocation, UserLocationCameraMode, Viewport } from './mapbox.common';
3
- export { MapboxTraceCategory, MapStyle };
2
+ import { AddExtrusionOptions, AddGeoJsonClusteredOptions, AddPolygonOptions, AddPolylineOptions, AddSourceOptions, AnimateCameraOptions, DeleteOfflineRegionOptions, DownloadOfflineRegionOptions, Feature, LatLng, LayerCommon, ListOfflineRegionsOptions, MapStyle, MapboxApi, MapboxCommon, MapboxMarker, MapboxViewBase, OfflineRegion, QueryRenderedFeaturesOptions, QuerySourceFeaturesOptions, SetCenterOptions, SetTiltOptions, SetViewportOptions, SetZoomLevelOptions, ShowOptions, TrackUserOptions, UpdateSourceOptions, UserLocation, UserLocationCameraMode, Viewport } from './common';
3
+ export * from './common';
4
4
  export declare function setLogLevel(level: 'none' | 'info' | 'debug' | 'error' | 'fault' | 'verbose'): void;
5
5
  export declare class MapboxView extends MapboxViewBase {
6
6
  private nativeMapView;
@@ -96,6 +96,7 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
96
96
  setOnMapClickListener(listener: (data: LatLng) => boolean, nativeMap?: MapboxView): Promise<void>;
97
97
  setOnMapLongClickListener(listener: (data: LatLng) => boolean, nativeMap?: any): Promise<void>;
98
98
  setOnMoveBeginListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
99
+ setOnMoveEndListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
99
100
  setOnScrollListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
100
101
  setOnFlingListener(listener: () => void, nativeMap?: any): Promise<void>;
101
102
  setOnCameraMoveListener(listener: (reason: any, animated?: any) => void, nativeMap?: any): Promise<void>;
@@ -103,7 +104,7 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
103
104
  setOnCameraIdleListener(listener: () => void, nativeMap?: any): Promise<void>;
104
105
  getViewport(nativeMap?: any): Promise<Viewport>;
105
106
  setViewport(options: SetViewportOptions, nativeMap?: any): Promise<void>;
106
- downloadOfflineRegion(options: DownloadOfflineRegionOptions): Promise<void>;
107
+ downloadOfflineRegion(options: DownloadOfflineRegionOptions): Promise<any>;
107
108
  listOfflineRegions(options?: ListOfflineRegionsOptions): Promise<OfflineRegion[]>;
108
109
  deleteOfflineRegion(options: DeleteOfflineRegionOptions): Promise<void>;
109
110
  _getOfflineManager(): any;
@@ -123,6 +124,7 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
123
124
  _stringToRenderMode(mode: any): any;
124
125
  _fineLocationPermissionGranted(): boolean;
125
126
  _getRegionName(offlineRegion: com.mapbox.mapboxsdk.offline.OfflineRegion): string;
127
+ _getRegionMetadata(offlineRegion: com.mapbox.mapboxsdk.offline.OfflineRegion): any;
126
128
  showUserLocationMarker(options: any, nativeMap?: any): Promise<void>;
127
129
  hideUserLocationMarker(nativeMap?: any): Promise<void>;
128
130
  changeUserLocationMarkerMode(renderModeString: any, cameraModeString: UserLocationCameraMode, nativeMap?: any): Promise<void>;
@@ -136,15 +138,8 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
136
138
  x: number;
137
139
  y: number;
138
140
  };
139
- }
140
- export declare class Layer implements LayerCommon {
141
- id: string;
142
- private instance;
143
- constructor(instance: any);
144
- visibility(): boolean;
145
- show(): void;
146
- hide(): void;
147
- getNativeInstance(): any;
148
- setFilter(filter: any[]): void;
149
- getFilter(): any[];
141
+ projectBack(screenCoordinate: {
142
+ x: number;
143
+ y: number;
144
+ }): LatLng;
150
145
  }
@@ -1,11 +1,9 @@
1
1
  import { request } from '@nativescript-community/perms';
2
- import { AndroidApplication, Application, Color, File, ImageSource, Trace, Utils, knownFolders, path } from '@nativescript/core';
3
- import { getImage } from '@nativescript/core/http';
4
- import { FilterParser } from './filter/filter-parser.android';
5
- import { layout } from '@nativescript/core/utils';
6
- import { LayerFactory } from './layers/layer-factory';
7
- import { CLog, CLogTypes, MapStyle, MapboxCommon, MapboxTraceCategory, MapboxViewBase, telemetryProperty } from './mapbox.common';
8
- export { MapboxTraceCategory, MapStyle };
2
+ import { AndroidApplication, Application, Color, File, Http, ImageSource, Trace, Utils, knownFolders, path } from '@nativescript/core';
3
+ import { ExpressionParser } from './expression/expression-parser';
4
+ import { Layer, LayerFactory } from './layers/layer-factory';
5
+ import { CLog, CLogTypes, MapStyle, MapboxCommon, MapboxViewBase, telemetryProperty } from './common';
6
+ export * from './common';
9
7
  function _getLocation(loc) {
10
8
  if (loc === null) {
11
9
  return null;
@@ -186,6 +184,18 @@ export class MapboxView extends MapboxViewBase {
186
184
  map: this,
187
185
  android: this.nativeMapView
188
186
  });
187
+ },
188
+ onMoveEndEvent: (event) => {
189
+ if (Trace.isEnabled()) {
190
+ CLog(CLogTypes.info, 'initMap(): onMoveEndEvent event');
191
+ }
192
+ this.notify({
193
+ eventName: MapboxViewBase.moveEndEvent,
194
+ object: this,
195
+ event,
196
+ map: this,
197
+ android: this.nativeMapView
198
+ });
189
199
  }
190
200
  };
191
201
  if (Trace.isEnabled()) {
@@ -208,7 +218,9 @@ export class MapboxView extends MapboxViewBase {
208
218
  }
209
219
  }
210
220
  [telemetryProperty.setNative](value) {
211
- com.mapbox.mapboxsdk.Mapbox.getTelemetry().setUserTelemetryRequestState(value);
221
+ if (com.mapbox.mapboxsdk.Mapbox.getTelemetry()) {
222
+ com.mapbox.mapboxsdk.Mapbox.getTelemetry().setUserTelemetryRequestState(value);
223
+ }
212
224
  }
213
225
  }
214
226
  export class Mapbox extends MapboxCommon {
@@ -294,7 +306,7 @@ export class Mapbox extends MapboxCommon {
294
306
  if (settings.showUserLocation) {
295
307
  this.requestFineLocationPermission()
296
308
  .then(() => {
297
- this.showUserLocationMarker({});
309
+ this.showUserLocationMarker(settings.locationComponentOptions);
298
310
  if (settings.onLocationPermissionGranted) {
299
311
  settings.onLocationPermissionGranted(this._mapboxMapInstance);
300
312
  }
@@ -552,6 +564,22 @@ export class Mapbox extends MapboxCommon {
552
564
  settings.onMoveBeginEvent(point);
553
565
  }
554
566
  }, mapboxNativeViewInstance);
567
+ this.setOnMoveEndListener((point) => {
568
+ if (Trace.isEnabled()) {
569
+ CLog(CLogTypes.info, 'Mapbox:initEventHandlerShim(): moveEnd:', point);
570
+ }
571
+ if (typeof settings.onMoveEndEvent != 'undefined') {
572
+ settings.onMoveEndEvent(point);
573
+ }
574
+ }, mapboxNativeViewInstance);
575
+ this.setOnScrollListener((point) => {
576
+ if (Trace.isEnabled()) {
577
+ CLog(CLogTypes.info, 'Mapbox:initEventHandlerShim(): move:', point);
578
+ }
579
+ if (typeof settings.onScrollEvent != 'undefined') {
580
+ settings.onScrollEvent(point);
581
+ }
582
+ }, mapboxNativeViewInstance);
555
583
  }
556
584
  onMapEvent(eventName, id, callback, nativeMapView) {
557
585
  if (typeof this.eventCallbacks[eventName] == 'undefined') {
@@ -1057,7 +1085,7 @@ export class Mapbox extends MapboxCommon {
1057
1085
  const mapboxPoint = new com.mapbox.mapboxsdk.geometry.LatLng(options.point.lat, options.point.lng);
1058
1086
  const screenLocation = this._mapboxMapInstance.getProjection().toScreenLocation(mapboxPoint);
1059
1087
  if (this._mapboxMapInstance.queryRenderedFeatures) {
1060
- const queryFilter = options.filter ? FilterParser.parseJson(options.filter) : null;
1088
+ const queryFilter = options.filter ? ExpressionParser.parseJson(options.filter) : null;
1061
1089
  const features = this._mapboxMapInstance.queryRenderedFeatures(screenLocation, queryFilter, options.layers);
1062
1090
  const result = [];
1063
1091
  for (let i = 0; i < features.size(); i++) {
@@ -1089,7 +1117,7 @@ export class Mapbox extends MapboxCommon {
1089
1117
  throw new Error(`Source with id "${sourceId}" not found.`);
1090
1118
  }
1091
1119
  let features;
1092
- const queryFilter = options.filter ? FilterParser.parseJson(options.filter) : null;
1120
+ const queryFilter = options.filter ? ExpressionParser.parseJson(options.filter) : null;
1093
1121
  if (source instanceof com.mapbox.mapboxsdk.style.sources.GeoJsonSource) {
1094
1122
  features = source.querySourceFeatures(queryFilter);
1095
1123
  }
@@ -1344,6 +1372,38 @@ export class Mapbox extends MapboxCommon {
1344
1372
  }
1345
1373
  });
1346
1374
  }
1375
+ setOnMoveEndListener(listener, nativeMap) {
1376
+ return new Promise((resolve, reject) => {
1377
+ try {
1378
+ if (!this._mapboxMapInstance) {
1379
+ reject('No map has been loaded');
1380
+ return;
1381
+ }
1382
+ if (Trace.isEnabled()) {
1383
+ CLog(CLogTypes.info, 'setOnMoveEndListener():');
1384
+ }
1385
+ this.onMoveListener = new com.mapbox.mapboxsdk.maps.MapboxMap.OnMoveListener({
1386
+ onMoveBegin: (detector) => { },
1387
+ onMove: (detector) => { },
1388
+ onMoveEnd: (detector) => {
1389
+ const coordinate = this._mapboxMapInstance.getCameraPosition().target;
1390
+ return listener({
1391
+ lat: coordinate.getLatitude(),
1392
+ lng: coordinate.getLongitude()
1393
+ });
1394
+ }
1395
+ });
1396
+ this._mapboxMapInstance.addOnMoveListener(this.onMoveListener);
1397
+ resolve();
1398
+ }
1399
+ catch (ex) {
1400
+ if (Trace.isEnabled()) {
1401
+ CLog(CLogTypes.info, 'Error in mapbox.setOnMoveEndListener: ' + ex);
1402
+ }
1403
+ reject(ex);
1404
+ }
1405
+ });
1406
+ }
1347
1407
  setOnScrollListener(listener, nativeMap) {
1348
1408
  return new Promise((resolve, reject) => {
1349
1409
  try {
@@ -1526,8 +1586,8 @@ export class Mapbox extends MapboxCommon {
1526
1586
  .build();
1527
1587
  const retinaFactor = Utils.layout.getDisplayDensity();
1528
1588
  const offlineRegionDefinition = new com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition(styleURL, bounds, options.minZoom, options.maxZoom, retinaFactor);
1529
- const info = '{name:"' + options.name + '"}';
1530
- const infoStr = new java.lang.String(info);
1589
+ const info = Object.assign({ name: options.name }, options.metadata);
1590
+ const infoStr = new java.lang.String(JSON.stringify(info));
1531
1591
  const encodedMetadata = infoStr.getBytes();
1532
1592
  if (!this._accessToken && !options.accessToken) {
1533
1593
  reject("First show a map, or pass in an 'accessToken' param");
@@ -1557,7 +1617,7 @@ export class Mapbox extends MapboxCommon {
1557
1617
  });
1558
1618
  }
1559
1619
  if (status.isComplete()) {
1560
- resolve();
1620
+ resolve(status);
1561
1621
  }
1562
1622
  else if (status.isRequiredResourceCountPrecise()) {
1563
1623
  }
@@ -1603,7 +1663,9 @@ export class Mapbox extends MapboxCommon {
1603
1663
  const name = this._getRegionName(offlineRegion);
1604
1664
  const offlineRegionDefinition = offlineRegion.getDefinition();
1605
1665
  const bounds = offlineRegionDefinition.getBounds();
1666
+ const metadata = this._getRegionMetadata(offlineRegion);
1606
1667
  regions.push({
1668
+ id: offlineRegion.getID(),
1607
1669
  name,
1608
1670
  style: offlineRegionDefinition.getStyleURL(),
1609
1671
  minZoom: offlineRegionDefinition.getMinZoom(),
@@ -1613,7 +1675,10 @@ export class Mapbox extends MapboxCommon {
1613
1675
  east: bounds.getLonEast(),
1614
1676
  south: bounds.getLatSouth(),
1615
1677
  west: bounds.getLonWest()
1616
- }
1678
+ },
1679
+ metadata,
1680
+ pixelRatio: offlineRegionDefinition.getPixelRatio(),
1681
+ type: offlineRegionDefinition.getType()
1617
1682
  });
1618
1683
  }
1619
1684
  }
@@ -1632,8 +1697,8 @@ export class Mapbox extends MapboxCommon {
1632
1697
  deleteOfflineRegion(options) {
1633
1698
  return new Promise((resolve, reject) => {
1634
1699
  try {
1635
- if (!options || !options.name) {
1636
- reject("Pass in the 'name' param");
1700
+ if (!options || (!options.id && !options.name)) {
1701
+ reject("Pass in the 'id' or 'name' param");
1637
1702
  return;
1638
1703
  }
1639
1704
  this._getOfflineManager().listOfflineRegions(new com.mapbox.mapboxsdk.offline.OfflineManager.ListOfflineRegionsCallback({
@@ -1646,8 +1711,8 @@ export class Mapbox extends MapboxCommon {
1646
1711
  if (offlineRegions !== null) {
1647
1712
  for (let i = 0; i < offlineRegions.length; i++) {
1648
1713
  const offlineRegion = offlineRegions[i];
1649
- const name = this._getRegionName(offlineRegion);
1650
- if (name === options.name) {
1714
+ const regionId = options.id ? offlineRegion.getID() : this._getRegionName(offlineRegion);
1715
+ if (regionId === (options.id || options.name)) {
1651
1716
  found = true;
1652
1717
  offlineRegion.delete(new com.mapbox.mapboxsdk.offline.OfflineRegion.OfflineRegionDeleteCallback({
1653
1718
  onError: (error) => {
@@ -1668,7 +1733,7 @@ export class Mapbox extends MapboxCommon {
1668
1733
  }
1669
1734
  catch (ex) {
1670
1735
  if (Trace.isEnabled()) {
1671
- CLog(CLogTypes.info, 'Error in mapbox.listOfflineRegions: ' + ex);
1736
+ CLog(CLogTypes.info, 'Error in mapbox.deleteOfflineRegion: ' + ex);
1672
1737
  }
1673
1738
  reject(ex);
1674
1739
  }
@@ -1785,11 +1850,24 @@ export class Mapbox extends MapboxCommon {
1785
1850
  if (options.maxzoom) {
1786
1851
  geojsonOptions.withMaxZoom(options.maxzoom);
1787
1852
  }
1853
+ if (options.lineMetrics !== undefined) {
1854
+ geojsonOptions.withLineMetrics(options.lineMetrics);
1855
+ }
1788
1856
  if (options.cluster) {
1789
1857
  geojsonOptions
1790
1858
  .withCluster(true)
1791
1859
  .withClusterMaxZoom(options.cluster.maxZoom || 13)
1792
1860
  .withClusterRadius(options.cluster.radius || 40);
1861
+ if (options.cluster.properties) {
1862
+ for (const property of Object.keys(options.cluster.properties)) {
1863
+ const propertyValues = options.cluster.properties[property];
1864
+ let operator = propertyValues[0];
1865
+ if (!Array.isArray(operator)) {
1866
+ operator = [operator];
1867
+ }
1868
+ geojsonOptions.withClusterProperty(property, ExpressionParser.parseJson(operator), ExpressionParser.parseJson(propertyValues[1]));
1869
+ }
1870
+ }
1793
1871
  }
1794
1872
  const geoJsonSource = new com.mapbox.mapboxsdk.style.sources.GeoJsonSource(id, geojsonOptions);
1795
1873
  if (options.data) {
@@ -1896,7 +1974,7 @@ export class Mapbox extends MapboxCommon {
1896
1974
  if (!lineSource) {
1897
1975
  throw new Error(`no source found with id: ${sId}`);
1898
1976
  }
1899
- const lineFeatures = lineSource.querySourceFeatures(FilterParser.parseJson(['==', '$type', 'LineString']));
1977
+ const lineFeatures = lineSource.querySourceFeatures(ExpressionParser.parseJson(['==', '$type', 'LineString']));
1900
1978
  if (lineFeatures.size() === 0) {
1901
1979
  throw new Error('no line string feature found');
1902
1980
  }
@@ -1984,9 +2062,14 @@ export class Mapbox extends MapboxCommon {
1984
2062
  }
1985
2063
  this.requestFineLocationPermission()
1986
2064
  .then(() => {
1987
- this.showUserLocationMarker({
1988
- useDefaultLocationEngine: true
1989
- });
2065
+ if (this._locationComponent) {
2066
+ this.changeUserLocationMarkerMode(options.renderMode || 'COMPASS', options.cameraMode || 'TRACKING');
2067
+ }
2068
+ else {
2069
+ this.showUserLocationMarker({
2070
+ useDefaultLocationEngine: true
2071
+ });
2072
+ }
1990
2073
  })
1991
2074
  .catch((err) => {
1992
2075
  console.error('Location permission denied. error:', err);
@@ -2081,11 +2164,11 @@ export class Mapbox extends MapboxCommon {
2081
2164
  return modeRef.NONE_GPS;
2082
2165
  case 'TRACKING':
2083
2166
  return modeRef.TRACKING;
2084
- case 'TRACK_COMPASS':
2167
+ case 'TRACKING_COMPASS':
2085
2168
  return modeRef.TRACKING_COMPASS;
2086
2169
  case 'TRACKING_GPS':
2087
2170
  return modeRef.TRACKING_GPS;
2088
- case 'TRACK_GPS_NORTH':
2171
+ case 'TRACKING_GPS_NORTH':
2089
2172
  return modeRef.TRACKING_GPS_NORTH;
2090
2173
  }
2091
2174
  }
@@ -2115,7 +2198,18 @@ export class Mapbox extends MapboxCommon {
2115
2198
  const metadata = offlineRegion.getMetadata();
2116
2199
  const jsonStr = new java.lang.String(metadata, 'UTF-8');
2117
2200
  const jsonObj = new org.json.JSONObject(jsonStr);
2118
- return jsonObj.getString('name');
2201
+ try {
2202
+ return jsonObj.getString('name');
2203
+ }
2204
+ catch (error) {
2205
+ return '';
2206
+ }
2207
+ }
2208
+ _getRegionMetadata(offlineRegion) {
2209
+ const metadata = offlineRegion.getMetadata();
2210
+ const jsonStr = new java.lang.String(metadata, 'UTF-8');
2211
+ const jsonObj = new org.json.JSONObject(jsonStr);
2212
+ return JSON.parse(jsonObj.toString());
2119
2213
  }
2120
2214
  showUserLocationMarker(options, nativeMap) {
2121
2215
  return new Promise((resolve, reject) => {
@@ -2241,23 +2335,32 @@ export class Mapbox extends MapboxCommon {
2241
2335
  reject('No location component has been loaded');
2242
2336
  return;
2243
2337
  }
2244
- if (Trace.isEnabled()) {
2245
- CLog(CLogTypes.info, 'changeUserLocationMarkerMode(): current render mode is:', this._locationComponent.getRenderMode());
2246
- }
2247
- if (Trace.isEnabled()) {
2248
- CLog(CLogTypes.info, "Mapbox::changeUserLocationMarkerMode(): changing renderMode to '" + renderModeString + "' cameraMode '" + cameraModeString + "'");
2338
+ if (cameraModeString) {
2339
+ const cameraMode = this._stringToCameraMode(cameraModeString);
2340
+ if (Trace.isEnabled()) {
2341
+ CLog(CLogTypes.info, `Mapbox::changeUserLocationMarkerMode(): current camera mode is: ${this._locationComponent.getCameraMode()}`);
2342
+ CLog(CLogTypes.info, `Mapbox::changeUserLocationMarkerMode(): changing camera mode to: ${cameraMode}`);
2343
+ }
2344
+ this._locationComponent.setCameraMode(cameraMode);
2345
+ if (Trace.isEnabled()) {
2346
+ CLog(CLogTypes.info, `Mapbox::changeUserLocationMarkerMode(): new camera mode is: ${this._locationComponent.getCameraMode()}`);
2347
+ }
2249
2348
  }
2250
- const cameraMode = this._stringToCameraMode(cameraModeString);
2251
- const renderMode = this._stringToRenderMode(renderModeString);
2252
- this._locationComponent.setCameraMode(cameraMode);
2253
- this._locationComponent.setRenderMode(renderMode);
2254
- if (Trace.isEnabled()) {
2255
- CLog(CLogTypes.info, 'changeUserLocationMarkerMode(): new render mode is:', this._locationComponent.getRenderMode());
2349
+ if (renderModeString) {
2350
+ const renderMode = this._stringToRenderMode(renderModeString);
2351
+ if (Trace.isEnabled()) {
2352
+ CLog(CLogTypes.info, `Mapbox::changeUserLocationMarkerMode(): current render mode is: ${this._locationComponent.getRenderMode()}`);
2353
+ CLog(CLogTypes.info, `Mapbox::changeUserLocationMarkerMode(): changing render mode to: '${renderMode}'`);
2354
+ }
2355
+ this._locationComponent.setRenderMode(renderMode);
2356
+ if (Trace.isEnabled()) {
2357
+ CLog(CLogTypes.info, 'changeUserLocationMarkerMode(): new render mode is:', this._locationComponent.getRenderMode());
2358
+ }
2256
2359
  }
2257
2360
  }
2258
2361
  catch (ex) {
2259
2362
  if (Trace.isEnabled()) {
2260
- CLog(CLogTypes.info, 'Error in mapbox.showUserLocationMarker: ' + ex);
2363
+ CLog(CLogTypes.info, 'Error in mapbox.changeUserLocationMarkerMode: ' + ex);
2261
2364
  }
2262
2365
  reject(ex);
2263
2366
  }
@@ -2358,7 +2461,7 @@ export class Mapbox extends MapboxCommon {
2358
2461
  resolve(marker);
2359
2462
  return;
2360
2463
  }
2361
- getImage(marker.icon).then((output) => {
2464
+ Http.getImage(marker.icon).then((output) => {
2362
2465
  marker.iconDownloaded = output.android;
2363
2466
  this._markerIconDownloadCache[marker.icon] = marker.iconDownloaded;
2364
2467
  resolve(marker);
@@ -2388,31 +2491,15 @@ export class Mapbox extends MapboxCommon {
2388
2491
  project(data) {
2389
2492
  const mapboxPoint = new com.mapbox.mapboxsdk.geometry.LatLng(data.lat, data.lng);
2390
2493
  const screenLocation = this._mapboxMapInstance.getProjection().toScreenLocation(mapboxPoint);
2391
- return { x: layout.toDeviceIndependentPixels(screenLocation.x), y: layout.toDeviceIndependentPixels(screenLocation.y) };
2392
- }
2393
- }
2394
- export class Layer {
2395
- constructor(instance) {
2396
- this.instance = instance;
2397
- this.id = instance.getId();
2494
+ return { x: Utils.layout.toDeviceIndependentPixels(screenLocation.x), y: Utils.layout.toDeviceIndependentPixels(screenLocation.y) };
2398
2495
  }
2399
- visibility() {
2400
- return this.instance.getVisibility().getValue() === 'visible' ? true : false;
2401
- }
2402
- show() {
2403
- this.instance.setProperties([new com.mapbox.mapboxsdk.style.layers.PropertyValue('visibility', 'visible')]);
2404
- }
2405
- hide() {
2406
- this.instance.setProperties([new com.mapbox.mapboxsdk.style.layers.PropertyValue('visibility', 'none')]);
2407
- }
2408
- getNativeInstance() {
2409
- return this.instance;
2410
- }
2411
- setFilter(filter) {
2412
- this.instance.setFilter(FilterParser.parseJson(filter));
2413
- }
2414
- getFilter() {
2415
- return FilterParser.toJson(this.instance.getFilter());
2496
+ projectBack(screenCoordinate) {
2497
+ const pointf = new android.graphics.PointF(screenCoordinate.x, screenCoordinate.y);
2498
+ const coordinate = this._mapboxMapInstance.getProjection().fromScreenLocation(pointf);
2499
+ return {
2500
+ lat: coordinate.getLatitude(),
2501
+ lng: coordinate.getLongitude()
2502
+ };
2416
2503
  }
2417
2504
  }
2418
- //# sourceMappingURL=mapbox.android.js.map
2505
+ //# sourceMappingURL=index.android.js.map
package/index.d.ts CHANGED
@@ -1,8 +1,101 @@
1
- /**
2
- * iOS and Android apis should match.
3
- * It doesn't matter if you export `.ios` or `.android`, either one but only one.
4
- */
5
- export * from './mapbox.ios';
1
+ import { ImageSource } from '@nativescript/core';
2
+ import { AddExtrusionOptions, AddGeoJsonClusteredOptions, AddPolygonOptions, AddPolylineOptions, AddSourceOptions, AnimateCameraOptions, DeleteOfflineRegionOptions, DownloadOfflineRegionOptions, Feature, LatLng, LayerCommon, ListOfflineRegionsOptions, MapboxApi, MapboxCommon, MapboxMarker, MapboxViewBase, MapStyle, OfflineRegion, QueryRenderedFeaturesOptions, QuerySourceFeaturesOptions, SetCenterOptions, SetTiltOptions, SetViewportOptions, SetZoomLevelOptions, ShowOptions, TrackUserOptions, UpdateSourceOptions, UserLocation, UserLocationCameraMode, Viewport } from './common';
6
3
 
7
4
  // Export any shared classes, constants, etc.
8
- export * from './mapbox.common';
5
+ export * from './common';
6
+
7
+ export declare function setLogLevel(level: 'none' | 'info' | 'debug' | 'error' | 'fault' | 'verbose'): void;
8
+ export declare class MapboxView extends MapboxViewBase {
9
+ private nativeMapView;
10
+ private delegate;
11
+ private settings;
12
+ private initialized;
13
+ private initCountHack;
14
+ setConfig(settings: any): void;
15
+ getNativeMapView(): any;
16
+ createNativeView(): Object;
17
+ onLoaded(): void;
18
+ initNativeView(): void;
19
+ disposeNativeView(): Promise<void>;
20
+ getMapboxApi(): any;
21
+ initMap(): void;
22
+ onLayout(left: number, top: number, right: number, bottom: number): void;
23
+ }
24
+ export declare class Mapbox extends MapboxCommon implements MapboxApi {
25
+ private _mapboxViewInstance;
26
+ private eventCallbacks;
27
+ private userLocationRenderMode;
28
+ setMapboxViewInstance(mapboxViewInstance: any): void;
29
+ initEventHandlerShim(settings: any, mapboxNativeViewInstance: any): void;
30
+ onMapEvent(eventName: any, id: any, callback: any, nativeMapView?: any): void;
31
+ offMapEvent(eventName: any, id: any, nativeMapView?: any): void;
32
+ private checkForClickEvent;
33
+ private _addMarkers;
34
+ show(options: ShowOptions): Promise<any>;
35
+ hide(): Promise<void>;
36
+ unhide(): Promise<void>;
37
+ destroy(nativeMap?: any): Promise<void>;
38
+ onStart(nativeMap?: any): Promise<void>;
39
+ onResume(nativeMap?: any): Promise<void>;
40
+ onPause(nativeMap?: any): Promise<void>;
41
+ onStop(nativeMap?: any): Promise<void>;
42
+ onLowMemory(nativeMap?: any): Promise<void>;
43
+ onDestroy(nativeMap?: any): Promise<void>;
44
+ setMapStyle(style: string | MapStyle, nativeMap?: any): Promise<void>;
45
+ getImage(imageId: string, nativeMap?: any): Promise<ImageSource>;
46
+ addImage(imageId: string, image: string, nativeMap?: any): Promise<void>;
47
+ removeImage(imageId: string, nativeMap?: any): Promise<void>;
48
+ addMarkers(markers: MapboxMarker[], nativeMap?: any): Promise<void>;
49
+ removeMarkers(ids?: any, nativeMap?: any): Promise<void>;
50
+ setCenter(options: SetCenterOptions, nativeMap?: any): Promise<void>;
51
+ getCenter(nativeMap?: any): Promise<LatLng>;
52
+ setZoomLevel(options: SetZoomLevelOptions, nativeMap?: any): Promise<void>;
53
+ getZoomLevel(nativeMap?: any): Promise<number>;
54
+ setTilt(options: SetTiltOptions, nativeMap?: any): Promise<void>;
55
+ getTilt(nativeMap?: any): Promise<number>;
56
+ getUserLocation(nativeMap?: any): Promise<UserLocation>;
57
+ _stringToCameraMode(mode: UserLocationCameraMode): any;
58
+ _stringToRenderMode(mode: any): any;
59
+ showUserLocationMarker(options: any, nativeMap?: any): Promise<void>;
60
+ hideUserLocationMarker(nativeMap?: any): Promise<void>;
61
+ changeUserLocationMarkerMode(renderModeString: any, cameraModeString: UserLocationCameraMode, nativeMap?: any): Promise<void>;
62
+ forceUserLocationUpdate(location: any, nativeMap?: any): void;
63
+ queryRenderedFeatures(options: QueryRenderedFeaturesOptions, nativeMap?: any): Promise<Feature[]>;
64
+ querySourceFeatures(sourceId: string, options?: QuerySourceFeaturesOptions, nativeMap?: any): Promise<Feature[]>;
65
+ addPolygon(options: AddPolygonOptions, nativeMap?: any): Promise<void>;
66
+ addPolyline(options: AddPolylineOptions, nativeMap?: any): Promise<void>;
67
+ private removePolyById;
68
+ private removePolys;
69
+ removePolygons(ids?: any[], nativeMap?: any): Promise<void>;
70
+ removePolylines(ids?: any[], nativeMap?: any): Promise<void>;
71
+ animateCamera(options: AnimateCameraOptions, nativeMap?: any): Promise<void>;
72
+ setOnMapClickListener(listener: (data: LatLng) => void, nativeMap?: any): Promise<void>;
73
+ setOnMapLongClickListener(listener: (data: LatLng) => void, nativeMap?: any): Promise<void>;
74
+ setOnScrollListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
75
+ setOnMoveBeginListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
76
+ setOnFlingListener(listener: () => void, nativeMap?: any): Promise<void>;
77
+ setOnCameraMoveListener(listener: (reason: any, animated?: any) => void, nativeMap?: any): Promise<void>;
78
+ setOnCameraMoveCancelListener(listener: () => void, nativeMap?: any): Promise<void>;
79
+ setOnCameraIdleListener(listener: () => void, nativeMap?: any): Promise<void>;
80
+ getViewport(nativeMap?: any): Promise<Viewport>;
81
+ setViewport(options: SetViewportOptions, nativeMap?: any): Promise<void>;
82
+ downloadOfflineRegion(options: DownloadOfflineRegionOptions): Promise<void>;
83
+ listOfflineRegions(options?: ListOfflineRegionsOptions): Promise<OfflineRegion[]>;
84
+ deleteOfflineRegion(options: DeleteOfflineRegionOptions): Promise<void>;
85
+ addExtrusion(options: AddExtrusionOptions, nativeMap?: any): Promise<void>;
86
+ updateSource(id: string, options: UpdateSourceOptions, nativeMap?: any): Promise<unknown>;
87
+ addSource(id: string, options: AddSourceOptions, nativeMap?: any): Promise<void>;
88
+ removeSource(id: string, nativeMap?: any): Promise<void>;
89
+ addLayer(style: any, belowLayerId?: string, nativeMapView?: any): Promise<void>;
90
+ removeLayer(id: string, nativeMapViewInstance?: any): Promise<void>;
91
+ addLinePoint(id: string, lnglat: any, sourceId?: string, nativeMapView?: any): Promise<void>;
92
+ addGeoJsonClustered(options: AddGeoJsonClusteredOptions, nativeMapViewInstance?: any): Promise<void>;
93
+ trackUser(options: TrackUserOptions, nativeMap?: any): Promise<void>;
94
+ getLayer(name: string, nativeMap?: any): Promise<LayerCommon>;
95
+ getLayers(nativeMap?: any): Promise<LayerCommon[]>;
96
+ project(data: LatLng): {
97
+ x: number;
98
+ y: number;
99
+ };
100
+ projectBack(screenCoordinate: { x: number, y: number }): LatLng;
101
+ }
@@ -1,6 +1,6 @@
1
1
  import { ImageSource } from '@nativescript/core';
2
- import { AddExtrusionOptions, AddGeoJsonClusteredOptions, AddPolygonOptions, AddPolylineOptions, AddSourceOptions, AnimateCameraOptions, DeleteOfflineRegionOptions, DownloadOfflineRegionOptions, Feature, LatLng, LayerCommon, ListOfflineRegionsOptions, MapStyle, MapboxApi, MapboxCommon, MapboxMarker, MapboxTraceCategory, MapboxViewBase, OfflineRegion, QueryRenderedFeaturesOptions, QuerySourceFeaturesOptions, SetCenterOptions, SetTiltOptions, SetViewportOptions, SetZoomLevelOptions, ShowOptions, TrackUserOptions, UpdateSourceOptions, UserLocation, UserLocationCameraMode, Viewport } from './mapbox.common';
3
- export { MapboxTraceCategory, MapStyle };
2
+ import { AddExtrusionOptions, AddGeoJsonClusteredOptions, AddPolygonOptions, AddPolylineOptions, AddSourceOptions, AnimateCameraOptions, DeleteOfflineRegionOptions, DownloadOfflineRegionOptions, Feature, LatLng, LayerCommon, ListOfflineRegionsOptions, MapStyle, MapboxApi, MapboxCommon, MapboxMarker, MapboxViewBase, OfflineRegion, QueryRenderedFeaturesOptions, QuerySourceFeaturesOptions, SetCenterOptions, SetTiltOptions, SetViewportOptions, SetZoomLevelOptions, ShowOptions, TrackUserOptions, UpdateSourceOptions, UserLocation, UserLocationCameraMode, Viewport } from './common';
3
+ export * from './common';
4
4
  export declare function setLogLevel(level: 'none' | 'info' | 'debug' | 'error' | 'fault' | 'verbose'): void;
5
5
  export declare class MapboxView extends MapboxViewBase {
6
6
  private nativeMapView;
@@ -18,23 +18,6 @@ export declare class MapboxView extends MapboxViewBase {
18
18
  initMap(): void;
19
19
  onLayout(left: number, top: number, right: number, bottom: number): void;
20
20
  }
21
- export declare class CustomUserLocationAnnotationView extends MGLUserLocationAnnotationView implements MGLUserLocationAnnotationView {
22
- size: number;
23
- dot: CALayer;
24
- arrow: CAShapeLayer;
25
- private userLocationRenderMode;
26
- private renderModeChanged;
27
- init(): this;
28
- update(): void;
29
- drawTrackingLocationMarker(): void;
30
- drawNonTrackingLocationMarker(): void;
31
- drawTrackingDot(): void;
32
- drawNonTrackingDot(): void;
33
- drawArrow(): void;
34
- updateHeading(): void;
35
- arrowPath(): any;
36
- changeUserLocationRenderMode(renderMode: any): void;
37
- }
38
21
  export declare class Mapbox extends MapboxCommon implements MapboxApi {
39
22
  private _mapboxViewInstance;
40
23
  private eventCallbacks;
@@ -87,6 +70,7 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
87
70
  setOnMapLongClickListener(listener: (data: LatLng) => void, nativeMap?: any): Promise<void>;
88
71
  setOnScrollListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
89
72
  setOnMoveBeginListener(listener: (data?: LatLng) => void, nativeMap?: any): Promise<void>;
73
+ setOnMoveEndListener(listener: () => void, nativeMap?: any): Promise<void>;
90
74
  setOnFlingListener(listener: () => void, nativeMap?: any): Promise<void>;
91
75
  setOnCameraMoveListener(listener: (reason: any, animated?: any) => void, nativeMap?: any): Promise<void>;
92
76
  setOnCameraMoveCancelListener(listener: () => void, nativeMap?: any): Promise<void>;
@@ -111,15 +95,8 @@ export declare class Mapbox extends MapboxCommon implements MapboxApi {
111
95
  x: number;
112
96
  y: number;
113
97
  };
114
- }
115
- export declare class Layer implements LayerCommon {
116
- id: string;
117
- private instance;
118
- constructor(instance: any);
119
- visibility(): boolean;
120
- show(): void;
121
- hide(): void;
122
- getNativeInstance(): any;
123
- setFilter(filter: any[]): void;
124
- getFilter(): any[];
98
+ projectBack(screenCoordinate: {
99
+ x: number;
100
+ y: number;
101
+ }): LatLng;
125
102
  }