Архитектура должна быть аналогична архитектуре NavigationController: у вас есть несколько ViewController, каждый из которых отвечает за одну карту в вашем приложении. Затем у вас есть «супер-контроллер», который управляет этими ViewControllers, добавляя и удаляя их контролируемые представления из суперпредставления, когда это необходимо.
Вам нужно будет использовать CoreAnimation и написать анимацию самостоятельно.