Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查SVG路径是否相邻?_Javascript_Php_Svg - Fatal编程技术网

Javascript 检查SVG路径是否相邻?

Javascript 检查SVG路径是否相邻?,javascript,php,svg,Javascript,Php,Svg,我用SVG路径制作了这些区域。 我需要一种计算共享边界的方法。是否有一种很好的方法可以从2个路径中获取d=”“值,并将它们相互匹配?如果它们具有相似的坐标+/-,如果它们不完全相同,则会有一定的误差裕度 这将在服务器端而不是客户端完成,不确定是否重要:) 谢谢大家 好的,我现在找到了一个适合我的解决方案。仍然有很多优化,但想分享我的方法 我将SVG数据存储在数据库中,因此我的使用可能与其他人不同,但方法可能相同 步骤1:存储每个svg路径的所有d=”“属性,所有坐标都以绝对值存储很重要,因此我

我用SVG路径制作了这些区域。

我需要一种计算共享边界的方法。是否有一种很好的方法可以从2个路径中获取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邻接”时,似乎会出现一些有用的搜索结果,也许我是瞎的,但我找到的答案中没有一个能够计算出这个值:)警察可以帮上忙,我去查一下拉尔斯。感谢这些形状中的一些彼此不重叠,所以交叉点库在这里不起作用,除非我调整库以允许几乎重叠,呵呵,拉尔斯,有什么想法吗?