Javascript 检查SVG路径是否相邻?
我用SVG路径制作了这些区域。 我需要一种计算共享边界的方法。是否有一种很好的方法可以从2个路径中获取d=”“值,并将它们相互匹配?如果它们具有相似的坐标+/-,如果它们不完全相同,则会有一定的误差裕度 这将在服务器端而不是客户端完成,不确定是否重要:)Javascript 检查SVG路径是否相邻?,javascript,php,svg,Javascript,Php,Svg,我用SVG路径制作了这些区域。 我需要一种计算共享边界的方法。是否有一种很好的方法可以从2个路径中获取d=”“值,并将它们相互匹配?如果它们具有相似的坐标+/-,如果它们不完全相同,则会有一定的误差裕度 这将在服务器端而不是客户端完成,不确定是否重要:) 谢谢大家 好的,我现在找到了一个适合我的解决方案。仍然有很多优化,但想分享我的方法 我将SVG数据存储在数据库中,因此我的使用可能与其他人不同,但方法可能相同 步骤1:存储每个svg路径的所有d=”“属性,所有坐标都以绝对值存储很重要,因此我
谢谢大家 好的,我现在找到了一个适合我的解决方案。仍然有很多优化,但想分享我的方法 我将SVG数据存储在数据库中,因此我的使用可能与其他人不同,但方法可能相同 步骤1:存储每个svg路径的所有d=”“属性,所有坐标都以绝对值存储很重要,因此我从预数据库插入运行函数:
$('#Test').click(function () {
$('path').each( function() {
pathh = (this).getAttribute('d');
pathAbs = Snap.path.toAbsolute(pathh);
console.log(pathh);
this.setAttribute('d', pathAbs);
});
});
步骤2:现在,我将把我之前放入数据库的所有路径d属性进一步分开,将带有经度和纬度的每个坐标存储在一个单独的表中,并与原始路径id建立关系
function GetRegionCoords($String, $Path) {
global $main;
$output = preg_split( "/(M|L|Z|C|A|z)/", $String );
$output = array_filter($output);
foreach ($output as $coord) {
$latNlong = explode(",", $coord);
$query = "INSERT INTO path_coords (RegionID, Latitude, Longitude) VALUES ('$RegionID', '$latNlong[0]', '$latNlong[1]')";
$result = mysqli_query($main, $query);
}
第三步:在这个阶段,只需选择所有条目并比较它们的经度和纬度值,如果它们在某个范围内(不精确,因为人类有错误,点不总是正好在彼此的顶部),那么它们的邻居
这是这段代码的早期阶段,所以我为任何错误道歉,但现在其他人至少有机会看到我的方法
我在这里的中间区域测试了它,以找到它的邻居,我的代码找到了所有邻居:
所以这对我来说太完美了
感谢您的建议。在搜索“svc邻接”时,似乎会出现一些有用的搜索结果,也许我是瞎的,但我找到的答案中没有一个能够计算出这个值:)警察可以帮上忙,我去查一下拉尔斯。感谢这些形状中的一些彼此不重叠,所以交叉点库在这里不起作用,除非我调整库以允许几乎重叠,呵呵,拉尔斯,有什么想法吗?