我正在尝试将JSTS配置为使用ES6模块加载,这样我就不必包含整个库。
关于如何在线执行此操作的示例很少,包括使用扩展函数来提取功能,但是使用isValid方法的所有尝试都失败了:
import extend from 'jsts/extend';
import Geometry from 'jsts/org/locationtech/jts/geom/Geometry';
import Valid from 'jsts/org/locationtech/jts/operation/valid';
import WKTReader from 'jsts/org/locationtech/jts/io/WKTReader';
extend(Geometry.prototype, {
buffer: function () {
return Valid.isValid(this, ...arguments);
}
})
let reader = new WKTReader();
var geom = reader.read('POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280))');
console.log(geom.isValid());
每次我回来的时候都是: 未捕获的TypeError:geom.isValid不是函数
示例JSTS ES6实现: https://github.com/DenisCarriere/jsts-es6-example
答案 0 :(得分:1)
您可以这样实现:
此示例与GeoJsonReader一起使用,但与WKTReader相似。
1>main.cpp
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\vulkansurface.h(14): error C2061: syntax error: identifier 'VulkanInstance'
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\main.cpp(104): error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'VulkanSurface'
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\main.cpp(104): note: No constructor could take the source type, or constructor overload resolution was ambiguous
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\main.cpp(104): error C2672: 'std::make_unique': no matching overloaded function found
1>VulkanInstance.cpp
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\vulkansurface.h(14): error C2061: syntax error: identifier 'VulkanInstance'
答案 1 :(得分:0)
我已经在某种程度上使用以下工作了:
import WKTReader from 'jsts/org/locationtech/jts/io/WKTReader';
import Valid from 'jsts/org/locationtech/jts/operation/valid/IsValidOp';
const valid = new Valid();
let reader = new WKTReader();
var geom = reader.read('POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280))');
console.log('Valid: ', valid.isValid(geom));
现在返回&#39; true&#39;对于上面的Polygon。但是,如果Polygon中出现错误,那么JSTS只会引发未被捕获的错误,因此从库中捕获错误是我的下一个问题......
答案 2 :(得分:0)
除了亚历克斯(Alex)的答案-可能对某人有帮助...
键入:
declare namespace jsts {
namespace operation {
namespace valid {
export class IsValidOp {
constructor(geom: geom.Geometry);
static isValid(coord?: geom.Coordinate): boolean;
}
}
}
}
declare module 'jsts' {
export = jsts;
}
用法:
import { IsValidOp as JstsIsValidOp } from 'jsts/org/locationtech/jts/operation/valid';
if (new JstsIsValidOp(jstsHole).isValid()) {
...
}
当正确地小部分而不是全局地导入JSTS时,请查看operation-namespace / -folder。特别相关,覆盖和有效目录可能会有所帮助。
要导入完整的ES5 / 6版本,还将在全球范围内包含monkey.js,该猴子在geometry中添加了便利功能,但会抛出循环依赖警告并增加构建大小。