JSFiddle - React, Tailwind, and code Playground
HTML
<svg id="map" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="500" height="400" viewBox="0 0 500 400">
<defs>
<!-- Define out map "pin". Just a circle in this case.
The circle is centred on (0,0) to make positioning at the destination point simpler. -->
<g id="pin">
<image width="30" height="30" transform="translate(-15 -15)" xlink:href="http://www.clker.com/cliparts/b/7/6/5/1308001441853739087google%20maps%20pin.svg"/>
</g>
</defs>
<!-- A simple floorplan map -->
<g id="floor" fill="#ddd" stroke="black" stroke-width="3">
<rect x="50" y="50" width="200" height="150" />
<rect x="100" y="200" width="150" height="150" />
<rect x="250" y="100" width="200" height="225" />
</g>
<!-- A group to hold the created pin refernces. Not necessary, but keeps things tidy. -->
<g id="markers">
</g>
</svg>
JavaScript
var markerPositions = [[225,175], [75,75], [150,225], [400,125], [300,300]];
var svgNS = "http://www.w3.org/2000/svg";
var xlinkNS = "http://www.w3.org/1999/xlink";
for (var i=0; i<markerPositions.length; i++) {
// Create an SVG <use> element
var use = document.createElementNS(svgNS, "use");
// Point it at our pin marker (the circle)
use.setAttributeNS(xlinkNS, "href", "#pin");
// Set it's x and y
use.setAttribute("x", markerPositions[i][0]);
use.setAttribute("y", markerPositions[i][1]);
// Add it to the "markers" group
document.getElementById("markers").appendChild(use);
}