Skip to content

Commit

Permalink
[FIX] Update fitBounds function to accept an array for padding & Fix …
Browse files Browse the repository at this point in the history
…Android Release Mode Crash (#297)

* [FIX] type assertion
* [FIX] javadoc
* [FIX] type assertion
* Update Camera.md
* Update docs.json
* Update Camera.tsx
* [FIX] camera docs
* [FIX] fitbound padding & animationDuration type
* [FIX] updateMarkers
  • Loading branch information
lavi02 authored Jul 4, 2024
1 parent 4439d2d commit 31bdad0
Show file tree
Hide file tree
Showing 5 changed files with 258 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,11 @@ public void restoreViews() {

public void updateMarkers(){

try {
for( int i = 0; i < markers.size(); i++ ){
markerUpdate.invoke(markers.get(i));
try {
if (markerUpdate != null) {
for( int i = 0; i < markers.size(); i++ ){
markerUpdate.invoke(markers.get(i));
}
}
}
catch (IllegalArgumentException e) { System.out.println(e.toString()); }
Expand Down
2 changes: 1 addition & 1 deletion docs/Camera.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Map camera transitions to fit provided bounds
| ---- | :--: | :------: | :----------: |
| `northEastCoordinates` | `Array` | `Yes` | North east coordinate of bound |
| `southWestCoordinates` | `Array` | `Yes` | South west coordinate of bound |
| `padding` | `Number` | `No` | Camera padding for bound |
| `padding` | `n/a` | `No` | Padding for the bounds |
| `animationDuration` | `Number` | `No` | Duration of camera animation |


Expand Down
6 changes: 3 additions & 3 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@
"methods": [
{
"name": "fitBounds",
"docblock": "Map camera transitions to fit provided bounds\n\n@example\nthis.camera.fitBounds([lng, lat], [lng, lat])\nthis.camera.fitBounds([lng, lat], [lng, lat], 20, 1000) // padding for all sides\nthis.camera.fitBounds([lng, lat], [lng, lat], [verticalPadding, horizontalPadding], 1000)\nthis.camera.fitBounds([lng, lat], [lng, lat], [top, right, bottom, left], 1000)\n\n@param {Array<Number>} northEastCoordinates - North east coordinate of bound\n@param {Array<Number>} southWestCoordinates - South west coordinate of bound\n@param {Number=} padding - Camera padding for bound\n@param {Number=} animationDuration - Duration of camera animation\n@return {void}",
"docblock": "Map camera transitions to fit provided bounds\n\n@example\nthis.camera.fitBounds([lng, lat], [lng, lat])\nthis.camera.fitBounds([lng, lat], [lng, lat], 20, 1000) // padding for all sides\nthis.camera.fitBounds([lng, lat], [lng, lat], [verticalPadding, horizontalPadding], 1000)\nthis.camera.fitBounds([lng, lat], [lng, lat], [top, right, bottom, left], 1000)\n\n@param {Array<Number>} northEastCoordinates - North east coordinate of bound\n@param {Array<Number>} southWestCoordinates - South west coordinate of bound\n@param {Number|Array<Number>=} padding - Padding for the bounds\n@param {Number=} animationDuration - Duration of camera animation\n@return {void}",
"modifiers": [],
"params": [
{
Expand All @@ -289,9 +289,9 @@
},
{
"name": "padding",
"description": "Camera padding for bound",
"description": "Padding for the bounds",
"type": {
"name": "Number"
"name": null
},
"optional": true
},
Expand Down
246 changes: 246 additions & 0 deletions docs/offlineManager.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
<!-- This file was autogenerated from offlineManager.js do not modify -->
## <MapLibreGL.offlineManager />
### OfflineManager implements a singleton (shared object) that manages offline packs.<br/>All of this class’s instance methods are asynchronous, reflecting the fact that offline resources are stored in a database.<br/>The shared object maintains a canonical collection of offline packs.


### methods
#### createPack(options[, progressListener][, errorListener])

Creates and registers an offline pack that downloads the resources needed to use the given region offline.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `options` | `OfflineCreatePackOptions` | `Yes` | Create options for a offline pack that specifices zoom levels, style url, and the region to download. |
| `progressListener` | `Callback` | `No` | Callback that listens for status events while downloading the offline resource. |
| `errorListener` | `Callback` | `No` | Callback that listens for status events while downloading the offline resource. |



```javascript
const progressListener = (offlineRegion, status) => console.log(offlineRegion, status);
const errorListener = (offlineRegion, err) => console.log(offlineRegion, err);

await MapLibreGL.offlineManager.createPack({
name: 'offlinePack',
styleURL: 'mapbox://...',
minZoom: 14,
maxZoom: 20,
bounds: [[neLng, neLat], [swLng, swLat]]
}, progressListener, errorListener)
```


#### invalidatePack(name)

Invalidates the specified offline pack. This method checks that the tiles in the specified offline pack match those from the server. Local tiles that do not match the latest version on the server are updated.This is more efficient than deleting the offline pack and downloading it again. If the data stored locally matches that on the server, new data will not be downloaded.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `name` | `String` | `Yes` | Name of the offline pack. |



```javascript
await MapLibreGL.offlineManager.invalidatePack('packName')
```


#### deletePack(name)

Unregisters the given offline pack and allows resources that are no longer required by any remaining packs to be potentially freed.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `name` | `String` | `Yes` | Name of the offline pack. |



```javascript
await MapLibreGL.offlineManager.deletePack('packName')
```


#### invalidateAmbientCache()

Forces a revalidation of the tiles in the ambient cache and downloads a fresh version of the tiles from the tile server.<br/>This is the recommend method for clearing the cache.<br/>This is the most efficient method because tiles in the ambient cache are re-downloaded to remove outdated data from a device.<br/>It does not erase resources from the ambient cache or delete the database, which can be computationally expensive operations that may carry unintended side effects.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |




```javascript
await MapLibreGL.offlineManager.invalidateAmbientCache();
```


#### clearAmbientCache()

Erases resources from the ambient cache.<br/>This method clears the cache and decreases the amount of space that map resources take up on the device.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |




```javascript
await MapLibreGL.offlineManager.clearAmbientCache();
```


#### setMaximumAmbientCacheSize(size)

Sets the maximum size of the ambient cache in bytes. Disables the ambient cache if set to 0.<br/>This method may be computationally expensive because it will erase resources from the ambient cache if its size is decreased.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `size` | `Number` | `Yes` | Size of ambient cache. |



```javascript
await MapLibreGL.offlineManager.setMaximumAmbientCacheSize(5000000);
```


#### resetDatabase()

Deletes the existing database, which includes both the ambient cache and offline packs, then reinitializes it.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |




```javascript
await MapLibreGL.offlineManager.resetDatabase();
```


#### getPacks()

Retrieves all the current offline packs that are stored in the database.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |




```javascript
const offlinePacks = await MapLibreGL.offlineManager.getPacks();
```


#### getPack(name)

Retrieves an offline pack that is stored in the database by name.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `name` | `String` | `Yes` | Name of the offline pack. |



```javascript
const offlinePack = await MapLibreGL.offlineManager.getPack();
```


#### mergeOfflineRegions(path)

Sideloads offline db

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `path` | `String` | `Yes` | Path to offline tile db on file system. |



```javascript
await MapLibreGL.offlineManager.mergeOfflineRegions(path);
```


#### setTileCountLimit(limit)

Sets the maximum number of tiles that may be downloaded and stored on the current device.<br/>Consult the Terms of Service for your map tile host before changing this value.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `limit` | `Number` | `Yes` | Map tile limit count. |



```javascript
MapLibreGL.offlineManager.setTileCountLimit(1000);
```


#### setProgressEventThrottle(throttleValue)

Sets the period at which download status events will be sent over the React Native bridge.<br/>The default is 500ms.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `throttleValue` | `Number` | `Yes` | event throttle value in ms. |



```javascript
MapLibreGL.offlineManager.setProgressEventThrottle(500);
```


#### subscribe(packName, progressListener, errorListener)

Subscribe to download status/error events for the requested offline pack.<br/>Note that createPack calls this internally if listeners are provided.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `packName` | `String` | `Yes` | Name of the offline pack. |
| `progressListener` | `Callback` | `Yes` | Callback that listens for status events while downloading the offline resource. |
| `errorListener` | `Callback` | `Yes` | Callback that listens for status events while downloading the offline resource. |



```javascript
const progressListener = (offlinePack, status) => console.log(offlinePack, status)
const errorListener = (offlinePack, err) => console.log(offlinePack, err)
MapLibreGL.offlineManager.subscribe('packName', progressListener, errorListener)
```


#### unsubscribe(packName)

Unsubscribes any listeners associated with the offline pack.<br/>It's a good idea to call this on componentWillUnmount.

##### arguments
| Name | Type | Required | Description |
| ---- | :--: | :------: | :----------: |
| `packName` | `String` | `Yes` | Name of the offline pack. |



```javascript
MapLibreGL.offlineManager.unsubscribe('packName')
```



6 changes: 3 additions & 3 deletions javascript/components/Camera.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -427,15 +427,15 @@ class Camera extends React.Component<CameraProps> {
*
* @param {Array<Number>} northEastCoordinates - North east coordinate of bound
* @param {Array<Number>} southWestCoordinates - South west coordinate of bound
* @param {Number=} padding - Camera padding for bound
* @param {Number|Array<Number>=} padding - Padding for the bounds
* @param {Number=} animationDuration - Duration of camera animation
* @return {void}
*/
fitBounds(
northEastCoordinates: number[],
southWestCoordinates: number[],
padding = 0,
animationDuration = 0.0,
padding: number | number[] | null | undefined = 0,
animationDuration: number | null | undefined = 0.0,
): void {
const pad = {
paddingLeft: 0,
Expand Down

0 comments on commit 31bdad0

Please sign in to comment.