This paper proposed a fast and accurate method to estimate the camera pose and focal length with known camera position and vertical direction. Our proposed method only uses a single 2D-3D point correspondence for our estimation which is a perspective-n-point (PnP) problem. First, a camera with known pose is placed in the world frame and its position is the ground truth. Then, after several intermediate camera frames are established, the main work is to continually rotate the original camera frame to the final camera frame where the line of camera position and 2D point, and the line of the camera position and 3D point, are collinear. When the two lines are collinear, the camera pose can be estimated because the rotation angles are known and simultaneously an equation system of two variables (i.e., camera pose and focal length) can be given. Consequently, the single solution of camera pose and focal length is obtained. Last, a thorough test in synthetic data is conducted for our proposed method and several state-of-the-art perspective-n-point solvers. The experimental results show our proposed method performs better in terms of numerical stability, noise sensitivity and computational speed, and has good robust to camera position and vertical direction.