UNPKG

@nativescript-community/ui-carto

Version:

NativeScript plugin for CARTO Mobile SDK

193 lines 6.85 kB
import { File, Folder, knownFolders, path } from '@nativescript/core'; import { mapPosVectorFromArgs } from '..'; import { BaseNative } from '../BaseNative'; import { toNativeMapPos } from '../core'; import { getFileName, getRelativePathToApp } from '../index.common'; export function nativeVectorToArray(vector) { const count = vector.size(); const result = []; for (let index = 0; index < count; index++) { result[index] = vector.get(index); } return result; } export function arrayToNativeVector(array) { const vector = NTStringVector.alloc().init(); for (let index = 0; index < array.length; index++) { vector.add(array[index]); } return vector; } export function nativeVariantToJS(variant) { return JSON.parse(variant.toString()); } export function jsonVariant(str) { return NTVariant.fromString(str); } export function JSVariantToNative(variant) { if (Array.isArray(variant) || typeof variant === 'object') { return NTVariant.fromString(JSON.stringify(variant)); } else if (variant) { if (typeof variant === 'boolean') { return NTVariant.alloc().initWithBoolVal(variant); } else if (typeof variant === 'number') { return NTVariant.alloc().initWithDoubleVal(variant); } else if (typeof variant === 'string') { return NTVariant.alloc().initWithString(variant); // } else { // return NTVariant.alloc().initWithObject(variant); } } return null; } export function nativeMapToJS(theMap) { const result = {}; const count = theMap.size(); let key; for (let index = 0; index < count; index++) { key = theMap.get_key(index); result[key] = nativeVariantToJS(theMap.get(key)); } return result; } export function setShowDebug(value) { NTLog.setShowDebug(value); } export function setShowWarn(value) { NTLog.setShowWarn(value); } export function setShowInfo(value) { NTLog.setShowInfo(value); } export function setShowError(value) { NTLog.setShowError(value); } const currentAppFolder = knownFolders.currentApp(); export class ZippedAssetPackage extends BaseNative { createNative(options) { let zipPath; try { const fullZipPath = getFileName(options.zipPath); zipPath = getRelativePathToApp(options.zipPath); if (File.exists(fullZipPath)) { let assetPackage; if (options.basePack) { assetPackage = options.basePack.getNative(); } const vectorTileStyleSetData = NTAssetUtils.loadAsset(zipPath); if (assetPackage) { return NTZippedAssetPackage.alloc().initWithZipDataBaseAssetPackage(vectorTileStyleSetData, assetPackage); } else { return NTZippedAssetPackage.alloc().initWithZipData(vectorTileStyleSetData); } } else { throw new Error(`could not find zip file: ${options.zipPath}(${zipPath})`); } } catch (error) { console.error(`ZippedAssetPackage(${zipPath}, ${options.zipPath}): ${error}`); throw error; } } getAssetNames() { return this.getNative().getAssetNames(); } } function walkDir(dirPath, cb, currentSubDir) { const folder = Folder.fromPath(dirPath); folder.eachEntity((entity) => { if (Folder.exists(entity.path)) { walkDir(entity.path, cb, currentSubDir ? path.join(currentSubDir, entity.name) : entity.name); } else { cb(currentSubDir ? path.join(currentSubDir, entity.name) : entity.name); } return true; }); } var NTDirAssetPackageImpl = /** @class */ (function (_super) { __extends(NTDirAssetPackageImpl, _super); function NTDirAssetPackageImpl() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.loadUsingNS = false; return _this; } NTDirAssetPackageImpl.new = function () { var result = NTDirAssetPackageImpl.alloc().init(); return result; }; NTDirAssetPackageImpl.prototype.initialize = function (options) { var dirPath = options.dirPath; this.loadUsingNS = !!options.loadUsingNS; this.dirPath = getFileName(dirPath); this.cartoDirPath = getRelativePathToApp(dirPath); }; NTDirAssetPackageImpl.prototype.loadAsset = function (name) { if (!name) { return null; } var result; if (this.loadUsingNS) { var data = File.fromPath(path.join(this.dirPath, name)).readSync(); var arr = new ArrayBuffer(data.length); data.getBytes(arr); result = NTBinaryData.alloc().initWithDataPtrSize(arr, data.length); } else { result = NTAssetUtils.loadAsset(path.join(this.cartoDirPath, name)); } return result; }; NTDirAssetPackageImpl.prototype.getAssetNames = function () { var _this = this; if (this.assetNames == null) { try { this.assetNames = NTStringVector.alloc().init(); var test_1 = []; walkDir(this.dirPath, function (fileRelPath) { _this.assetNames.add(fileRelPath); test_1.push(fileRelPath); }); } catch (e) { } } return this.assetNames; }; return NTDirAssetPackageImpl; }(NTAssetPackage)); export { NTDirAssetPackageImpl }; export class DirAssetPackage extends BaseNative { createNative(options) { if (Folder.exists(getFileName(options.dirPath))) { const result = NTDirAssetPackageImpl.new(); result.initialize(options); return result; } else { console.error(`could not find dir: ${options.dirPath}`); return null; } } } export function distanceToEnd(index, coordinates) { return CartoAdditionsUtils.distanceToEndWithIntPoly(index, mapPosVectorFromArgs(coordinates)); } export function isLocationOnPath(point, coordinates, closed, geodesic, toleranceEarth) { return CartoAdditionsUtils.isLocationOnPolyClosedGeodesicToleranceEarth(toNativeMapPos(point), mapPosVectorFromArgs(coordinates), closed, geodesic, toleranceEarth); } export function fromNativeMapRange(value) { return [value.getMax(), value.getMin()]; } export function toNativeMapRange(value) { if (value instanceof NTMapRange) { return value; } // ignore z for now as points can get under the map! return NTMapRange.alloc().initWithMinMax(value[0], value[1]); } //# sourceMappingURL=index.ios.js.map