我有一张地图,通过将不同颜色的区域转换为路径,我将它从光栅图形转换为 SVG 文件。
我知道如何在给定边缘数组的情况下进行基本的多边形点检查,但是这些svg:path
元素表示多个多边形以及掩码(以考虑海洋等),并且通过解析d
属性来提取该信息似乎相当笨拙。
是否有一个 JS 库可以让我简化检查?我基本上想创建随机点,然后检查它们是在陆地上(即多边形内部)还是水(即外部)。
由于 SVG 元素似乎允许处理鼠标事件,我认为这应该不是什么大问题(即,如果您可以判断鼠标指针是否位于元素顶部,那么您已经在解决指向性问题了多边形问题)。
编辑:使事情复杂一点,我应该提到svg:path
元素似乎基于曲线而不是线条,因此仅解析d
属性以创建边缘数组似乎不是一种选择。
由于元素可以采用fill
属性,因此在画布上渲染 SVG,然后在给定点查找像素的颜色值的 ghetto 方法可能会起作用,但这似乎是一种非常非常糟糕的方法。