1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-12-27 10:30:28 +00:00
TiddlyWiki5/plugins/tiddlywiki/geospatial/operators/olc.js

56 lines
1.5 KiB
JavaScript

/*\
title: $:/plugins/tiddlywiki/geospatial/operators/olc.js
type: application/javascript
module-type: filteroperator
Filter operators for open location code conversions
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var openlocationcode = require("$:/plugins/tiddlywiki/geospatial/openlocationcode.js"),
turf = require("$:/plugins/tiddlywiki/geospatial/turf.js"),
geotools = require("$:/plugins/tiddlywiki/geospatial/geotools.js");
exports["olc-decode"] = function(source,operator,options) {
var olc;
try {
olc = openlocationcode.decode(operator.operands[0] || "")
} catch(e) {
return [];
}
var suffixes = (operator.suffixes || [])[0] || [],
obj;
if(suffixes.indexOf("bounds") !== -1) {
obj = turf.polygon([[
[olc.latitudeLo, olc.longitudeLo],
[olc.latitudeHi, olc.longitudeLo],
[olc.latitudeHi, olc.longitudeHi],
[olc.latitudeLo, olc.longitudeHi],
[olc.latitudeLo, olc.longitudeLo]
]]);
} else {
obj = turf.point([olc.latitudeCenter,olc.longitudeCenter]);
}
return [JSON.stringify(obj)];
};
exports["olc-encode"] = function(source,operator,options) {
var lat = $tw.utils.parseNumber(operator.operands[0] || "0"),
long = $tw.utils.parseNumber(operator.operands[1] || "0"),
codelength = $tw.utils.parseNumber(operator.operands[2] || "0") || openlocationcode.CODE_PRECISION_NORMAL,
olc;
try {
olc = openlocationcode.encode(lat,long,codelength);
} catch(e) {
return []
}
return [olc];
};
})();