Vehicular ad-hoc networks (VANETs) play an important role in intelligent transportation systems for improving security and efficiency. However, due to dynamic characteristics of the vehicular environment, routing remains a significant challenge in the VANETs. While single-layer routing protocols based on the traditional layered open systems interconnection (OSI) model are readily available, they often do not make use of important parameters at the lower three layers of the OSI model when making routing decision. Hence, for making optimal routing decision to gain superior network performance, there is a need to design cross-layer routing that allows information exchange between layers. In this article, a survey of the existing single-layer and cross-layer routing techniques in VANETs is presented, emphasizing on cross-layer routing protocols that utilize information at the physical, medium access control and network layers as routing parameters. An overview and challenges of routing are given, followed by a brief discussion of single-layer routing with more focus on geographic routing. Cross-layer routing protocols are then discussed in detail. The article then elaborates on some advantages and disadvantages of the existing routing approaches, cross-layer routing parameter selection and cross-layer design issues. Finally, some open research challenges in developing efficient routing protocols in the VANETs are highlighted.