Forked from smlsvnssn's Pen Svg circle segment.
A Pen by Captain Anonymous on CodePen.
<div id="mapWrapper"> | |
<svg id="theMap" width="100%" height="100%" | |
viewBox="0 0 200 200"> | |
<!--<circle cx="100" cy="100" r="100" fill="#660"/> --> | |
<g id="arcs" transform=" translate(100 100) rotate(-90) scale(1 -1)"> | |
<path class="stroke" stroke="#fff" /> | |
<path class="fill" fill="#fff" /> | |
</g> | |
<text x="100" y="100" dy="0.38em"></text> | |
<!--<circle cx="100" cy="100" r="90" fill="#fff"/>--> | |
</svg> | |
</div> |
$(function(){ | |
var perc = 0; | |
update(); | |
setInterval(update, 80); | |
function lpad (s, c, l) { | |
var m = l - s.length; | |
while (m > 0) { s = c + s; m--; } | |
return s; | |
} | |
function upto(s, c) { | |
var i = s.indexOf(c); | |
if (i === -1) return s | |
else return s.substring(0, i); | |
} | |
function update(){ | |
$('#arcs path.stroke').attr('d', createSvgArc(0, 0, 80, 0, Math.PI*2, 60)) | |
$('#arcs path.fill').attr('d', createSvgArc(0, 0, 80, 0, perc, 60)); | |
$('#theMap text')[0].innerHTML = lpad(upto(""+perc/Math.PI/2*100, '.'), '0', 2); | |
perc += Math.PI/50; | |
if(perc >= Math.PI*2) perc = 0; | |
} | |
function createSvgArc (x, y, r, startAngle, endAngle, ri) { | |
ri = ri || 0; | |
if(startAngle>endAngle){ | |
var s = startAngle; | |
startAngle = endAngle; | |
endAngle = s; | |
} | |
if (endAngle - startAngle > Math.PI*2 ) { | |
endAngle = Math.PI*1.99999; | |
} | |
var largeArc = endAngle - startAngle <= Math.PI ? 0 : 1; | |
return ['M', | |
x + Math.cos(startAngle)*ri, | |
y - Math.sin(startAngle)*ri, | |
'L', | |
x + Math.cos(startAngle)*r, | |
y - Math.sin(startAngle)*r, | |
'A', r, r, 0, largeArc, 0, | |
x + Math.cos(endAngle)*r, | |
y - Math.sin(endAngle)*r, | |
'L', | |
x + Math.cos(endAngle)*ri, | |
y - Math.sin(endAngle)*ri, | |
'A', ri, ri, 0, largeArc, 1, | |
x + Math.cos(startAngle)*ri, | |
y - Math.sin(startAngle)*ri, | |
].join(' '); | |
} | |
}); |
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
#mapWrapper { | |
width: 200px; | |
height: 200px; | |
border-radius: 50%; | |
background-size: cover; | |
background-repeat: no-repeat; | |
background-image: url(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRTPktSUIr4IX2I8Y7ACMzNXqY-aTs6R4w3CTfxmE673Exooo2q7xUXUbM) | |
} | |
#theMap { | |
background-color: rgb(150,150,150); | |
opacity: 0.8; | |
border-radius: 50%; | |
} | |
#theMap text { | |
fill: white; | |
font-size: 40px; | |
text-anchor: middle; | |
} |
Forked from smlsvnssn's Pen Svg circle segment.
A Pen by Captain Anonymous on CodePen.