A computer-implemented method of determining a route taken by a user through a navigable network, the navigable network being represented by an electronic map comprising a plurality of segments representing navigable elements of the navigable network, the segments being connected by nodes, and wherein the navigable network comprises a predefined sub-network, the sub-network comprising a network of intersecting routes through the navigable network, the sub-network being represented by a subset of segments of the electronic map, and wherein nodes at which there are two or more outgoing segments of the subset of segments are indicative of decision points (56, 90, 92) of the sub-network, the method comprising: identifying an upcoming decision point (56, 90, 92) along a main route being travelled by a user between an origin and a destination, at which decision point (56, 90, 92) there are a plurality of outgoing segments, and at which decision point (56, 90, 92) there are one or more alternative routes (103, 108) to the destination, wherein the upcoming decision point (56, 90, 92) along the main route is a next decision point (56, 90, 92) of the sub-network ahead of a current position along the main route, and wherein each alternative route (103, 108) passes along a different one of the outgoing segments at the decision point (56, 90, 92) than the outgoing segment providing a continuation of the main route; storing, in at least one database, data indicative of each alternative route (103, 108) in association with data indicative of the outgoing segment at the decision point (56, 90, 92) included in the route; determining, when a current position of a user passes the decision point (56, 90, 92), whether a current position of the user can be matched to the outgoing segment at the decision point (56, 90, 92) which provides the continuation of the main route, and, if the current position cannot be matched to the outgoing segment which provides the continuation of the main route, determining whether the current position of the user can be matched to an outgoing segment at the decision point (56, 90, 92) associated with one of the stored alternative routes (103, 108) in the at least one database for the decision point (56, 90, 92), wherein, when the current position can be matched to an outgoing segment at the decision point (56, 90, 92) associated with one of the stored alternative routes (103, 108) for the decision point (56, 90, 92), obtaining the data indicative of the stored alternative route (103, 108), and taking the alternative route (103, 108) to be the new main route from the decision point (56, 90, 92) to the destination, and wherein, when the current position cannot be matched to an outgoing segment at the decision point (56, 90, 92) associated with one of the stored alternative routes for the decision point (56, 90, 92), identifying an outgoing segment to which the current position can be matched, generating a route from the decision point (56, 90, 92) to the destination along the identified segment, and using the generated route as the new main route from the decision point (56, 90, 92) to the destination. identifying an upcoming decision point (56, 90, 92) along a main route being travelled by a user between an origin and a destination, at which decision point (56, 90, 92) there are a plurality of outgoing segments, and at which decision point (56, 90, 92) there are one or more alternative routes (103, 108) to the destination, wherein the upcoming decision point (56, 90, 92) along the main route is a next decision point (56, 90, 92) of the sub-network ahead of a current position along the main route, and wherein each alternative route (103, 108) passes along a different one of the outgoing segments at the decision point (56, 90, 92) than the outgoing segment providing a continuation of the main route; storing, in at least one database, data indicative of each alternative route (103, 108) in association with data indicative of the outgoing segment at the decision point (56, 90, 92) included in the route; determining, when a current position of a user passes the decision point (56, 90, 92), whether a current position of the user can be matched to the outgoing segment at the decision point (56, 90, 92) which provides the continuation of the main route, and, if the current position cannot be matched to the outgoing segment which provides the continuation of the main route, determining whether the current position of the user can be matched to an outgoing segment at the decision point (56, 90, 92) associated with one of the stored alternative routes (103, 108) in the at least one database for the decision point (56, 90, 92), wherein, when the current position can be matched to an outgoing segment at the decision point (56, 90, 92) associated with one of the stored alternative routes (103, 108) for the decision point (56, 90, 92), obtaining the data indicative of the stored alternative route (103, 108), and taking the alternative route (103, 108) to be the new main route from the decision point (56, 90, 92) to the destination, and wherein, when the current position cannot be matched to an outgoing segment at the decision point (56, 90, 92) associated with one of the stored alternative routes for the decision point (56, 90, 92), identifying an outgoing segment to which the current position can be matched, generating a route from the decision point (56, 90, 92) to the destination along the identified segment, and using the generated route as the new main route from the decision point (56, 90, 92) to the destination.