【发布时间】:2011-12-03 04:00:25
【问题描述】:
我有一张地图,我通过将不同颜色的区域转换为路径,将它从光栅图形转换为 SVG 文件。
我知道如何在给定一组边的情况下进行基本的多边形点检查,但是svg:path 元素代表多个多边形以及掩码(以考虑海洋等)并通过解析 @ 来提取该信息987654322@ 属性似乎相当严厉。
是否有一个 JS 库可以让我简化检查?我基本上想创建随机点,然后检查它们是在陆地(即多边形内部)还是水(即外部)。
由于 SVG 元素似乎允许处理鼠标事件,我认为这应该不是什么大问题(即,如果您可以判断鼠标指针是否位于元素顶部,那么您已经解决了问题-in-polygon 问题)。
编辑:让事情复杂一点,我应该提到svg:path 元素似乎是基于曲线而不是线条,所以只是解析d 属性来创建一个边数组似乎不是一个选项。
由于元素可以采用fill 属性,因此在画布上渲染 SVG,然后在给定点查找像素的颜色值的 ghetto 方法可能有效,但这似乎是一种非常非常糟糕的方法去做吧。
【问题讨论】:
-
在完成了 SVG 规范并在 Chrome 的 JavaScript 控制台上花了一个小时后,似乎最大的问题是我有一个
svg:path元素而不是常规形状元素。否则,可以将svg.checkIntersection与 1x1svg:rect一起使用(假设它适用于区域而不是轮廓)。如果您正在寻找任何形式的抽象,SVG API 似乎帮助不大。
标签: svg javascript vector-graphics point-in-polygon