I’m developing a mobile application that draws street maps in 3d. One of the issues I’m having is trying to draw street labels without any overlapping. I can get text to contour along the paths but there are a lot of places that they overlap:

Google does a pretty great job of drawing street labels without any intersections or overlapping. The 3d view in the mobile Google Maps application for Android is particularly good at demonstrating this.
The only idea I’ve been able to come up with is doing collision detection (with bounding spheres on each letter between close by labels). This is pretty expensive in 3d, especially with many labels on screen at once.
I was looking for some insight into how Google might be doing their street label placement or other ideas I could try that are less expensive than brute-force collision detection. The Google Maps app updates label placement in real time as you zoom and pan the display so whatever method they’re using is pretty performant.
You’re overcomplicating it a bit I’d say. Rather than trying to collide letter by letter simplify it to a chain of lines. A name written in a straight way can be represented by one straight line. Some text inside a curved road can be approximated by using 2-3 lines at most. It doesn’t have to be pixel accurate after all.
You could also build a collection of other streets “colliding” with the current one (also as positions like bridges) and then ensure your names don’t overlap or get close to these positions.