Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
在给定坐标下获取SVG-Object_s?_Svg_Coordinates - Fatal编程技术网

在给定坐标下获取SVG-Object_s?

在给定坐标下获取SVG-Object_s?,svg,coordinates,Svg,Coordinates,我想通过坐标从SVG文件中获取对象ID 例如在 有一个方法,但它只返回最上面的元素。要获取某个点下的所有元素,可以找到最上面的元素,将其隐藏,然后再次查看该点,直到不再存在其他元素: var elementsAt = function( x, y ){ var elements = [], current = document.elementFromPoint( x, y ); // at least one element was found and it's inside

我想通过坐标从SVG文件中获取对象ID

例如在


有一个方法,但它只返回最上面的元素。要获取某个点下的所有元素,可以找到最上面的元素,将其隐藏,然后再次查看该点,直到不再存在其他元素:

var elementsAt = function( x, y ){
    var elements = [], current = document.elementFromPoint( x, y );
    // at least one element was found and it's inside a ViewportElement
    // otherwise it would traverse up to the <html> root of jsfiddle webiste.
    while( current &&  current.nearestViewportElement ){
        elements.push( current );
        // hide the element and look again
        current.style.display = "none";
        current = document.elementFromPoint( x, y );
    }
    // restore the display
    elements.forEach( function( elm ){
       elm.style.display = ''; 
    });
    return elements;
}
var elementsAt=函数(x,y){
var elements=[],current=document.elementFromPoint(x,y);
//至少找到了一个元素,它位于ViewportElement中
//否则它将遍历到jsfiddle webiste的根。
while(current&¤t.nearestViewportElement){
元素。推动(当前);
//隐藏元素并再次查看
current.style.display=“无”;
当前=document.elementFromPoint(x,y);
}
//恢复显示
元素。forEach(函数(elm){
elm.style.display='';
});
返回元素;
}

如果你想得到答案,你需要提供更多的信息。您使用的是哪种编程语言?您使用过任何库吗?它主要是这个单一任务-所以语言并不重要-快速和肮脏的脚本编写就可以了。PHP会非常好,因为SVG是通过PHP生成的——但即使这不是最优的,我想能够解决getObjectsAt任务的语言也会做得更好;)添加一点细节:我生成了非周期模式(即Penrose)——由manny多边形平铺的大型SVG。现在我不想尝试在这些非周期网格上构建一个细胞自动机(比如Conways GOL)。问题是获取邻域资源的颜色-我希望通过getObjectAt(x,y)之类的东西来选择它。再次感谢您!非常有用。