It was found after the last optimization that the 3d view was not working fine in that the roads were not displayed in the beginning and also the sign view was showing incorrect signs. So the optimization was removed and resotred to the orginal code. However, lastRoad as removed from the previous commit is still removed as the voice portion seems to be working fine and also setneeds display is also kept removed from the completeRoutePoly. Also, assigning completeroutepoly and other arrays should not consume time, as it is passed by pointers, the only thing that could take time is allocation and deallocation of views, but is not found to cause any jitter, and is left as it is.

Added another [self drawRoadsInView:self.currentLocation.currentLocation]; in tabBar:DidSelectItem  the first call sets the directionlist view if it is being initialized for the first time and the second call below will be remove the cells that have been "crossed". This is important for case when the car stops in between the route and the user switches to listview

Added an if condition for directionsign in the method drawRoadsInView, so that in the beginning it displays the initilization sign and does not jump directly to the first road

Made the 2d view transparent.
Improved the tabbar and the navbar auto-hide.

Removed unknown navigation item from the main screen
Added constraints to all the views. It will now work perfectly with all the screen sizes.
All other subviews that will be added programatically, and their frame sizes will be determined programatically.
Added a new activity indicator