A method performed on a mobile device comprising: displaying a map view on a display of the mobile device, the map view including a set of map objects (215, 220, 225) corresponding to a location within a map from an initial virtual position of a virtual camera; receiving user input specifying a 3D mode that uses a physical camera on the mobile device; in response to the user input, capturing one or more first images of a physical environment within which the mobile device resides using the physical camera; determining an initial position of the physical camera in the physical environment using the one or more first images; specifying a set of physical positions of a set of 3D objects of the map relative to the initial position of the physical camera, the set of 3D objects corresponding to the set of map objects; displaying a first virtual map image on the display, the first virtual map image being overlaid on the one or more first images; capturing one or more second images of the physical environment within which the mobile device resides using the physical camera after movement of the mobile device; determining a current physical position of the physical camera with respect to the initial position based on the one or more second images; determining an updated virtual position of the virtual camera based on the current physical position of the physical camera; rendering a second virtual map image of the set of 3D objects based on the updated virtual position of the virtual camera; and displaying the map image on the display, the second virtual map image being overlaid on the one or more second images. displaying a map view on a display of the mobile device, the map view including a set of map objects (215, 220, 225) corresponding to a location within a map from an initial virtual position of a virtual camera; receiving user input specifying a 3D mode that uses a physical camera on the mobile device; in response to the user input, capturing one or more first images of a physical environment within which the mobile device resides using the physical camera; determining an initial position of the physical camera in the physical environment using the one or more first images; specifying a set of physical positions of a set of 3D objects of the map relative to the initial position of the physical camera, the set of 3D objects corresponding to the set of map objects; displaying a first virtual map image on the display, the first virtual map image being overlaid on the one or more first images; capturing one or more second images of the physical environment within which the mobile device resides using the physical camera after movement of the mobile device; determining a current physical position of the physical camera with respect to the initial position based on the one or more second images; determining an updated virtual position of the virtual camera based on the current physical position of the physical camera; rendering a second virtual map image of the set of 3D objects based on the updated virtual position of the virtual camera; and displaying the map image on the display, the second virtual map image being overlaid on the one or more second images.