@nativescript-community/ui-carto
Version:
NativeScript plugin for CARTO Mobile SDK
193 lines • 6.85 kB
JavaScript
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