How to get Mid point of tag in svg using javascript

后端 未结 2 1485
北恋
北恋 2020-12-19 11:19

I am working in SVG tags using javascript. I tried to get group tag midpoint in svg. Is it possible to get mid point value of group tag using javascr

相关标签:
2条回答
  • 2020-12-19 12:02

    You can get the bounding box of the <g> element by getting a reference to it and calling the function getBBox().

    var  bbox = document.getElementById("object_7").getBBox();
    

    Note however that this is the union of all the bounding boxes of the group's children. If the group has a transform, it is not reflected in the bbox value. If you are adding elements to the group, this is probably the one you want.

    If you want the bounds of the object in screen space, then you can get the group element's transform and apply it to the centre point you have calculated.

    var  ctm = document.getElementById("object_7").getCTM()
    
    // Calculate the centre of the group
    var cx = bbox.x + bbox.width/2;
    var cy = bbox.y + bbox.height/2;
    
    // Transform cx,cy by the group's transform
    var pt = document.getElementById("mysvg").createSVGPoint();
    pt.x = cx;
    pt.y = cy;
    pt = pt.matrixTransform(ctm);
    
    // centre point in screen coordinates is in pt.x and pt.y
    

    Demo here

    0 讨论(0)
  • 2020-12-19 12:07

    If you want to get absolute middle point/position of g tag in screen:

    let el = document.getElementById("object_7")
    let midX = (el.getBoundingClientRect().left + el.getBoundingClientRect().right) / 2
    let midY = (el.getBoundingClientRect().top + el.getBoundingClientRect().bottom) / 2
    

    It also works for other svg elements.

    0 讨论(0)
提交回复
热议问题