private void drawSpeedLimitsOnRoad(Graphics2D g, RoadSegment roadSegment) {
if (roadSegment.speedLimits() == null) {
return;
}
final RoadMapping roadMapping = roadSegment.roadMapping();
assert roadMapping != null;
final double offset = -(roadMapping.laneCount() / 2.0 + 1.5) * roadMapping.laneWidth();
final int redRadius2 = (int) (2.5 * roadMapping.laneWidth()) / 2;
final int whiteRadius2 = (int) (2.0 * roadMapping.laneWidth()) / 2;
final int fontHeight = whiteRadius2;
final int offsetY = (int) (0.4 * fontHeight);
final Font font = new Font("SansSerif", Font.BOLD, fontHeight); //$NON-NLS-1$
final FontMetrics fontMetrics = getFontMetrics(font);
for (final SpeedLimit speedLimit : roadSegment.speedLimits()) {
g.setFont(font);
final RoadMapping.PosTheta posTheta = roadMapping.map(speedLimit.getPosition(), offset);
final double speedLimitValueKmh = speedLimit.getSpeedLimitKmh();
if (speedLimitValueKmh < 150) {
g.setColor(Color.RED);
g.fillOval((int) posTheta.x - redRadius2, (int) posTheta.y - redRadius2, 2 * redRadius2, 2 * redRadius2);