我想将 Google 的开放位置代码 JavaScript 实现(使用 plv8 扩展)嵌入到 PostgreSQL 中,并使其可用于对 PostGIS 几何/地理数据类型进行编码/解码。
虽然我成功了,但我无法弄清楚如何仅为 https://github.com/google/open-location-code/blob/master/js/src/openlocationcode.js 文件创建单个函数,因此我最终在每个需要编码/解码 plus codes 的函数中都复制了该函数。当我试图将其提取到自己的函数中时,我只能得到包含 JavaScript 字符串或 [Object],[object] 字符串而不是可调用函数。
在 PostgreSQL 中,使用 plv8 扩展是否可能实现这一点?
不完整的代码片段示例(完整版本在此处):
虽然我成功了,但我无法弄清楚如何仅为 https://github.com/google/open-location-code/blob/master/js/src/openlocationcode.js 文件创建单个函数,因此我最终在每个需要编码/解码 plus codes 的函数中都复制了该函数。当我试图将其提取到自己的函数中时,我只能得到包含 JavaScript 字符串或 [Object],[object] 字符串而不是可调用函数。
在 PostgreSQL 中,使用 plv8 扩展是否可能实现这一点?
不完整的代码片段示例(完整版本在此处):
DROP FUNCTION IF EXISTS olc.encode(float,float,integer);
CREATE OR REPLACE FUNCTION olc.encode(
p_latitude double precision,
p_longitude double precision,
p_code_length integer DEFAULT 10
)
RETURNS text AS
$BODY$
var f = function () {
var OpenLocationCode = {};
/**
* Provides a normal precision code, approximately 14x14 meters.
* @const {number}
*/
OpenLocationCode.CODE_PRECISION_NORMAL = 10;
/**
* Provides an extra precision code, approximately 2x3 meters.
* @const {number}
*/
OpenLocationCode.CODE_PRECISION_EXTRA = 11;
// A separator used to break the code into two parts to aid memorability.
var SEPARATOR_ = '+';
// The number of characters to place before the separator.
var SEPARATOR_POSITION_ = 8;
// The character used to pad codes.
var PADDING_CHARACTER_ = '0';