Transform Attribute Strings vs Transform Matrix

This uses getBBox() and the transform matrix object attribute to resize an element and place it where desired. If additional transforms are to be applied to the element, then the efficient object-oriented transform matrix is used, rather than appending transform 'strings' to the transform attribute.
Scenerio:
You have placed the path element for the outline of the U.S. from an svg world map.
It is presently located in your current svg application.
It can be resized and transformed so it fits this current svg viewPort.
Let's assume you want to have it centered in the current svg drawing, and be 390 px wide.
(Note: It is best to remove any previous transforms on the elements.)

Matrix Transform Object:
1.) Start a Transform Request Object
2.) Bind Element's Current Transform to animatable list
3.) Expose its Transform List baseVal.
Then, for each transform:
a.) Apply a Transform Object Request.
b.) Append Request To List.
c.) Consolidate into Matrix.

Transform Requests:
myTransformRequest.setTranslate(x,y)
myTransformRequest.setScale(scaleX,scaleY)
myTransformRequest.setRotate(angleDegrees,refX,refY)
myTransformRequest.setSkewX(angleRadians)
myTransformRequest.setSkewY(angleRadians)

Append Strings:   Matrix Object:

USpath.getAttribute("transform") = :
Javascript:
OK in:IE11/CH32/FF23