Слой изображения карты делается отдельным картосервером, в базу данных которого импортируются данные в виде немного отличном от того как они хранятся в API серере. Чаще всего это PosrtgreSQL+PostGIS, а данные заливаются утилитой osm2pgsql. После этого настраивается связка mapnik + mod_tile (apache), где первый собственно рисует запрашиваемый регион в картинку, а второй является координатором, получая от пользователей запросы какой кусок им надо, нет ли его в кеше и если нет, то запрос к мапнику, что бы нарисовал.
Если вы хотите делать навигационную программу, то вам нужен будет свой рисовальщик карты, как 2D, так и 3D. Распространённые картосерверы тут вряд ли подойдут, они ориентированы на Web, поддерживают только 2D, у них проблемы с поворотом карты по направлению движения и т.д. и т.п.