react-native-mapmagic-gl
Version:
Mapmagic GL is a react-native interactive maps library
67 lines (62 loc) • 2.04 kB
JavaScript
import { NativeModules } from 'react-native';
import SnapshotOptions from './SnapshotOptions';
const MapboxGLSnapshotManger = NativeModules.MGLSnapshotModule;
/**
* The snapshotManager generates static raster images of the map.
* Each snapshot image depicts a portion of a map defined by an SnapshotOptions object you provide.
* The snapshotter generates the snapshot asynchronous.
*/
class SnapshotManager {
/**
* Takes a snapshot of the base map using the provided Snapshot options. NOTE pitch, heading, zoomLevel only works when centerCoordinate is set!
*
* @example
*
* // creates a temp file png of base map
* const uri = await MapboxGL.snapshotManager.takeSnap({
* centerCoordinate: [-74.126410, 40.797968],
* width: width,
* height: height,
* zoomLevel: 12,
* pitch: 30,
* heading: 20,
* styleURL: MapboxGL.StyleURL.Dark,
* writeToDisk: true, // creates a temp file
* });
*
* // creates base64 png of base map
* const uri = await MapboxGL.snapshotManager.takeSnap({
* centerCoordinate: [-74.126410, 40.797968],
* width: width,
* height: height,
* zoomLevel: 12,
* pitch: 30,
* heading: 20,
* styleURL: MapboxGL.StyleURL.Dark,
* });
*
* // creates snapshot with bounds
* const uri = await MapboxGL.snapshotManager.takeSnap({
* bounds: [[-74.126410, 40.797968], [-74.143727, 40.772177]],
* width: width,
* height: height,
* styleURL: MapboxGL.StyleURL.Dark,
* });
*
* @param {SnapshotOptions} options Snapshot options for create a static image of the base map
* @return {Promise}
*/
takeSnap(options = {}) {
const snapshotOptions = new SnapshotOptions(options);
return new Promise(async (resolve, reject) => {
try {
const uri = await MapboxGLSnapshotManger.takeSnap(snapshotOptions);
resolve(uri);
} catch (e) {
reject(e);
}
});
}
}
const snapshotManager = new SnapshotManager();
export default snapshotManager;