UNPKG

react-native-mapsforge-vtm

Version:

React Native components to build vector maps using Mapsforges fork of vtm. Offline rendering of OpenStreetMap data. Android only

103 lines (99 loc) 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _useRefState = _interopRequireDefault(require("../compose/useRefState.js")); var _promiseQueue = _interopRequireDefault(require("../promiseQueue.js")); var _nativeMapModules = require("../nativeMapModules.js"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * External dependencies */ /** * Internal dependencies */ const Module = _nativeMapModules.MapLayerMBTilesBitmapModule; ; const LayerMBTilesBitmap = ({ nativeNodeHandle, reactTreeIndex, mapFile, enabledZoomMin = 1, enabledZoomMax = 20, alpha = 256, transparentColor, onCreate, onRemove, onChange, onError }) => { // @ts-ignore const [random, setRandom] = (0, _react.useState)(0); const [uuid, setUuid] = (0, _useRefState.default)(null); const [triggerCreateNew, setTriggerCreateNew] = (0, _react.useState)(null); alpha = Math.round(alpha); const createLayer = () => { setUuid(false); _promiseQueue.default.enqueue(() => { return Module.createLayer(nativeNodeHandle, mapFile, Math.round(enabledZoomMin), Math.round(enabledZoomMax), alpha, transparentColor, reactTreeIndex).then(response => { setUuid(response.uuid); setRandom(Math.random()); null === triggerCreateNew ? onCreate ? onCreate(response) : null : onChange ? onChange(response) : null; }).catch(err => { console.log('ERROR', err); onError ? onError(err) : null; }); }); }; (0, _react.useEffect)(() => { if (uuid === null && nativeNodeHandle && mapFile) { createLayer(); } return () => { if (uuid && nativeNodeHandle) { _promiseQueue.default.enqueue(() => { return Module.removeLayer(nativeNodeHandle, uuid).then(removedUuid => { onRemove ? onRemove({ uuid: removedUuid }) : null; }).catch(err => { console.log('ERROR', err); onError ? onError(err) : null; }); }); } }; }, [nativeNodeHandle, !!uuid, triggerCreateNew]); // enabledZoomMin enabledZoomMax changed. (0, _react.useEffect)(() => { if (nativeNodeHandle && uuid) { Module.updateEnabledZoomMinMax(nativeNodeHandle, uuid, Math.round(enabledZoomMin), Math.round(enabledZoomMax)).catch(err => { console.log('ERROR', err); onError ? onError(err) : null; }); } }, [enabledZoomMin, enabledZoomMax]); (0, _react.useEffect)(() => { if (nativeNodeHandle) { if (uuid) { _promiseQueue.default.enqueue(() => { return Module.removeLayer(nativeNodeHandle, uuid).then(() => { setUuid(null); setTriggerCreateNew(Math.random()); }).catch(err => { console.log('ERROR', err); onError ? onError(err) : null; }); }); } else if (uuid === null && mapFile) { setTriggerCreateNew(Math.random()); } } }, [mapFile, alpha, transparentColor]); return null; }; LayerMBTilesBitmap.isMapLayer = true; var _default = exports.default = LayerMBTilesBitmap; //# sourceMappingURL=LayerMBTilesBitmap.js.map