A method of displaying a map on a client device, the method comprising: providing a map data memory storing map layers defining shapes, locations, and textual labels of map features, wherein each map layer corresponds to a category of map features; providing a template memory storing templates defining visual properties of map features at different zoom levels, wherein each of said map layers is associated with one or more templates; receiving a request from the client device to provide a plurality of map segments, each having a respective requested zoom level; determining visualization of map features within each map segment, according to the respective templates and the requested zoom level; and downloading to the client device a portion of the map data corresponding to each map segment and the determined visualization of map features, so as to allow the client device to render, based on the downloaded map data, an image of each map segment; and characterized by: determining the plurality of map segments to be downloaded to the client device by: determining a route from a starting point to a destination within an area of the map, the route comprising a sequence of route segments, each route segment having a respective length and angle of travel; and defining the plurality of map segments, each map segment containing a route segment and having a respective zoom level and orientation determined by the length and angle of travel of the respective route segment. providing a map data memory storing map layers defining shapes, locations, and textual labels of map features, wherein each map layer corresponds to a category of map features; providing a template memory storing templates defining visual properties of map features at different zoom levels, wherein each of said map layers is associated with one or more templates; receiving a request from the client device to provide a plurality of map segments, each having a respective requested zoom level; determining visualization of map features within each map segment, according to the respective templates and the requested zoom level; and downloading to the client device a portion of the map data corresponding to each map segment and the determined visualization of map features, so as to allow the client device to render, based on the downloaded map data, an image of each map segment; and characterized by: determining the plurality of map segments to be downloaded to the client device by: determining a route from a starting point to a destination within an area of the map, the route comprising a sequence of route segments, each route segment having a respective length and angle of travel; and defining the plurality of map segments, each map segment containing a route segment and having a respective zoom level and orientation determined by the length and angle of travel of the respective route segment. determining the plurality of map segments to be downloaded to the client device by: determining a route from a starting point to a destination within an area of the map, the route comprising a sequence of route segments, each route segment having a respective length and angle of travel; and defining the plurality of map segments, each map segment containing a route segment and having a respective zoom level and orientation determined by the length and angle of travel of the respective route segment. determining a route from a starting point to a destination within an area of the map, the route comprising a sequence of route segments, each route segment having a respective length and angle of travel; and defining the plurality of map segments, each map segment containing a route segment and having a respective zoom level and orientation determined by the length and angle of travel of the respective route segment.