maplibre-gl-js-amplify
Version:
MapLibre Plugin to Support Amplify Geo Integration
113 lines (112 loc) • 4.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeElement = exports.createElement = exports.validateCoordinates = exports.urlEncodePeriods = exports.getFeaturesFromData = exports.strHasLength = exports.isGeoJsonSource = exports.isPolygonArray = exports.isPolygon = exports.isGeofenceArray = exports.isGeofence = exports.isNamedLocationArray = exports.isNamedLocation = exports.isCoordinatesArray = exports.isCoordinates = void 0;
function isCoordinates(array) {
return (Array.isArray(array) &&
typeof array[0] === 'number' &&
typeof array[1] === 'number');
}
exports.isCoordinates = isCoordinates;
function isCoordinatesArray(array) {
return isCoordinates(array[0]);
}
exports.isCoordinatesArray = isCoordinatesArray;
function isNamedLocation(object) {
return (object &&
Array.isArray(object.coordinates) &&
typeof object.coordinates[0] === 'number' &&
typeof object.coordinates[1] === 'number');
}
exports.isNamedLocation = isNamedLocation;
function isNamedLocationArray(array) {
return isNamedLocation(array[0]);
}
exports.isNamedLocationArray = isNamedLocationArray;
function isGeofence(object) {
return (object &&
typeof object.geofenceId === 'string' &&
typeof object.geometry === 'object');
}
exports.isGeofence = isGeofence;
function isGeofenceArray(array) {
return Array.isArray(array) && isGeofence(array[0]);
}
exports.isGeofenceArray = isGeofenceArray;
function isPolygon(object) {
return Array.isArray(object) && isCoordinatesArray(object[0]);
}
exports.isPolygon = isPolygon;
function isPolygonArray(array) {
return Array.isArray(array) && isPolygon(array[0]);
}
exports.isPolygonArray = isPolygonArray;
function isGeoJsonSource(source) {
return source.type === 'geojson';
}
exports.isGeoJsonSource = isGeoJsonSource;
const strHasLength = (str) => typeof str === 'string' && str.length > 0;
exports.strHasLength = strHasLength;
const getFeaturesFromData = (data) => {
let features;
if (isCoordinatesArray(data)) {
features = data.map((point) => {
return {
type: 'Feature',
geometry: { type: 'Point', coordinates: point },
properties: { place_name: `Coordinates,${point}` },
};
});
}
else if (isNamedLocationArray(data)) {
features = data.map((location) => {
return {
type: 'Feature',
geometry: { type: 'Point', coordinates: location.coordinates },
properties: { title: location.title, address: location.address },
};
});
}
else {
features = data;
}
return features;
};
exports.getFeaturesFromData = getFeaturesFromData;
const urlEncodePeriods = (str) => {
return str.replace(/\./g, '%2E');
};
exports.urlEncodePeriods = urlEncodePeriods;
function validateCoordinates(coordinates) {
const [lng, lat] = coordinates;
if (!Number.isFinite(lng) || !Number.isFinite(lat)) {
throw new Error(`Invalid coordinates: [${lng},${lat}]`);
}
if (lat < -90 || lat > 90) {
const errorString = 'Latitude must be between -90 and 90 degrees inclusive.';
// eslint-disable-next-line no-console
console.warn(errorString);
throw new Error(errorString);
}
else if (lng < -180 || lng > 180) {
const errorString = 'Longitude must be between -180 and 180 degrees inclusive.';
// eslint-disable-next-line no-console
console.warn(errorString);
throw new Error(errorString);
}
}
exports.validateCoordinates = validateCoordinates;
function createElement(tagName, className, container) {
const el = window.document.createElement(tagName);
if (className !== undefined)
el.className = className;
if (container)
container.appendChild(el);
return el;
}
exports.createElement = createElement;
function removeElement(node) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}
exports.removeElement = removeElement;