按网上的例子做了一个DEMO,但拖动时只有选中的对象才能动,它里面的不跟着动,如何实现一起动!
<svg width="100%" height="100%"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   onload="Init(evt)" onmousedown="Grab(evt)" onmousemove="Drag(evt)" onmouseup="Drop(evt)">
   <title>Drag And Drop</title>
   <desc>
      A nice little demo of drag-and-drop functionality in SVG,
      written by Doug Schepers on February 16, 2004.
      Use or misuse this code however you wish.
   </desc>
   <script type="text/javascript"><![CDATA[
      var SVGDocument = null;
      var SVGRoot = null;
      var TrueCoords = null;
      var GrabPoint = null;
      var BackDrop = null;
      var DragTarget = null;
      function Init(evt){
         SVGDocument = evt.target.ownerDocument;
   SVGRoot = SVGDocument.documentElement;
   TrueCoords = SVGRoot.createSVGPoint();
         GrabPoint = SVGRoot.createSVGPoint();
         BackDrop = SVGDocument.getElementById("BackDrop");
      }      function Grab(evt){
         var targetElement = evt.target;
         if (BackDrop != targetElement){
            DragTarget = targetElement;
            DragTarget.parentNode.appendChild(DragTarget);
            DragTarget.setAttributeNS(null, "pointer-events", "none");
            var transMatrix = DragTarget.getCTM();
            GrabPoint.x = TrueCoords.x - Number(transMatrix.e);
            GrabPoint.y = TrueCoords.y - Number(transMatrix.f);
         }
      };       function Drag(evt){
         GetTrueCoords(evt);
         if (DragTarget){
            var newX = TrueCoords.x - GrabPoint.x;
            var newY = TrueCoords.y - GrabPoint.y;
            DragTarget.setAttributeNS(null, "transform", "translate(" + newX + "," + newY + ")");
         }
      };      function Drop(evt){
         if (DragTarget){
            var targetElement = evt.target;
            DragTarget.setAttributeNS(null, "pointer-events", "all");
            if ("Folder" == targetElement.parentNode.id){
               targetElement.parentNode.appendChild( DragTarget );
            }
            else{}
            DragTarget = null;
         }
      };      function GetTrueCoords(evt){
         var newScale = SVGRoot.currentScale;
         var translation = SVGRoot.currentTranslate;
         TrueCoords.x = (evt.clientX - translation.x)/newScale;
         TrueCoords.y = (evt.clientY - translation.y)/newScale;
      };
   ]]></script>
   <a xlink:href=""><image x='0' y='0' width="682px" height="452px" xlink:href="M62.jpg" />
<g id="aaa" transform="translate(265,367)" >
<g transform="skewY(5)">
<image x='0' y='0' width="150" height="38" xlink:href="LicensePlate.JPG" />
<rect x="0" y="0" width="150" height="38" rx="3" ry="3"  stroke="#c0c0c0" fill="none" style="stroke-width:4"/>
<text x="5" y="28" style="font-size:30; font-family: SimHei;font-weight: bold;fill:#c0c0c0"  >
测试字符
</text>
</g>
</g>
</svg>