He still needs the nap, it sounds like. You could also implement quiet time and see if he naps (usually he will). My stepdaughter had 2 plush chairs for her kids - they looked like mini-versions of living room easy chairs, but they also unfolded into a sort of chaise lounge type of thing. The kids could sit in them with a book and a blanket even if they were fighting the idea of a "real nap" in their beds, and 90% of the time they'd fall asleep.
I'd keep the nap earlier in the day. If 12:30 isn't working, then maybe push it to 1;30, but 3:00 is too late to start, as you've seen. They wake up and it's dark and time for dinner, and they get cranky. Preschools and day care centers give kids lunch and then put them down for a nap or quiet time, dim lights, no talking. They don't "make" them sleep of course, but most of them do nod off.
But you can also keep a bedtime routine that involves quiet time at night. I'd still stick to 8 or 8:30, and that means in bed and not getting up. If you want to leave a light on or soft music, fine. But keep the idea that it's bedtime, and don't just let him do activities until he falls asleep without realizing it. That messes up your nighttime routine and he'll never learn to really put himself to sleep.
My son took a regular 3 hour nap well past the age of 4. He was a very active child so he really went full tilt in the morning, and again after he woke up. I think the extra activity in the afternoon tired him out so he was ready to sleep again at 8 or so. That said, the 6 months after they really give up the nap (but still kind of need it) are just hell, whether it occurs at 2.7 or 4.5 years of age!