+function drawCurrentLocation(trackPoint) {
+ var locpoint = gps2xy(trackPoint.coords.latitude, trackPoint.ccords.longitude);
+ var circleSize = gCurLocSize;
+ var mappos = {x: Math.round((locpoint.x - gPos.x) / gZoomFactor + gCanvas.width / 2),
+ y: Math.round((locpoint.y - gPos.y) / gZoomFactor + gCanvas.height / 2)};
+
+ // Initialize or draw cache.
+ if (!gCurPosMapCache)
+ gCurPosMapCache = {point: locpoint,
+ data: context.createImageData(circleSize, circleSize)};
+ else
+ gContext.putImageData(gCurPosMapCache, mappos.x - circleSize / 2,
+ mappos.y - circleSize / 2);
+
+ // Cache overdrawn area.
+ gCurPosMapCache = gContext.getImageData(mappos.x - circleSize / 2,
+ mappos.y - circleSize / 2,
+ circleSize, circleSize);
+
+ gContext.strokeStyle = gCurLocColor;
+ gContext.fillStyle = gContext.strokeStyle;
+ gContext.beginPath();
+ gContext.arc(mappos.x, mappos.y,
+ circleSize, 0, Math.PI * 2, false);
+ gContext.fill();
+}
+