Stack of maps

A system collects user data that describes at least one destination. The system generates, based on the collected user data, map data to render a plurality of maps. The maps are arranged in a stack so that a first interactive map is primarily displayed in the user interface and one or more dynamic maps are conceptually below that interactive map. A portion of each dynamic map is viewable and selectable within the user interface. As updated map data is received, information on the interactive map and dynamic maps is correspondingly updated. When a dynamic map is selected or the system detects that a dynamic map is to be displayed, the system provides for display a new interactive map that replaces the previous interactive map in the user interface.

BACKGROUND

1. Field of Art

The disclosure generally relates to the field of electronic maps, and specifically to visual display (or rendering).

2. Description of the Related Art

As the technologies of Geographic Information Systems (GIS) develop rapidly, electronic maps have been more and more widely used in various applications. Users use electronic maps to guide their trips. In addition, the electronic maps have become interactive, such as allowing users to zoom in or zoom out, sometimes by replacing one map with another of different scale, centered where possible on the same point. Furthermore, some electronic maps have route-planning functions and advice facilities by monitoring the user's position with the help of satellites.

However, current solutions for electronic maps only provide for display of one map at a time. This is inconvenient when users seek visual insight at one time on multiple maps corresponding to multiple locations. Accordingly, there is lacking a suite of methods for rendering multiple maps simultaneously in order to give users rich visual insight about multiple locations while allowing the users to conveniently interact with a real-time map.

SUMMARY

Embodiments of the present disclosure are generally directed to display of (or rendering of) a stack of maps. In some embodiments, a method, device, or system is disclosed for rendering a stack of maps. The disclosed configuration comprises collecting user data for rendering a plurality of maps to a user. The user data describes at least one destination. In one embodiment, the destination described by the user data is the user's favorite location. In some alternative embodiments, the user data includes recommended sets or popular sets of destinations that are either pre-loaded or that the user has affirmatively selected, e.g., top tourist spots, most popular restaurants.

The disclosed configuration generates, based on the user data, map data for rendering a stack of multiple maps. The stack of multiple maps includes a first interactive dynamic map (or interactive map) and a set of collapsed dynamic maps. The collapsed dynamic maps may update distance to destination, time remaining before next train arrival, etc. as the user is moving. The first interactive map is displayed in a relative position to the set of collapsed (or layered) dynamic maps. The disclosed configuration updates the map data to replace one of the collapsed dynamic maps with a second interactive map corresponding to the collapsed dynamic map and sends the map data for rendering the stack of multiple maps. The second interactive map is displayed to replace the relative position of the first interactive map.

DETAILED DESCRIPTION

The disclosed embodiments have advantages and features, which will be more readily apparent from the detailed description, and the accompanying figures (or drawings).

Configuration Overview

The disclosed configurations provide improvements to conventionally rendered electronic maps. For example, a system (and computer-implemented method and non-transitory storage medium) is configured to provide (e.g., display or render) a stack of multiple maps that a user can interact with. In one example configuration, the system collects user data of a user describing locations such as a destination input by the user, one or more pre-identified (e.g., favorite) locations selected by the user, and/or a current location of the user. In addition, the system uses the user data to determine map data for rendering a stack of maps.

In one embodiment, electronic maps to be rendered on a user interface of a computing device are stacked together. For example, the stacked electronic maps are an electronic representation of two or more physical maps that are stacked (or collapsed or layered) on top of each other. Thus, the stack of maps corresponds to separate maps that can be rendered but are shown as if each of the maps is on top of another.

In addition, each of the separate electronic maps is rendered with a portion that is selectable, e.g., by a user, so that in response to selection of a particular map in that selectable area that map can go to the top for viewing. For example, the stack of maps includes an electronic dynamic interactive map (or interactive map) that identifies a current location of the device (e.g., used by the user) and is rendered on a user interface of a device to be on top of the stack of maps. Below the interactive map in the stack of maps is one or more dynamic maps that may be rendered in the user interface of the device as further described herein.

Each dynamic map corresponds with one or more predefined locations. The location may be predefined by a user selection on the device or that is sent to the device. The system sends the map data to the client device for displaying the stack of maps to the user. Further, the system may update the map data to replace one of the dynamic maps with another interactive map corresponding to the dynamic map. For example, the dynamic map can fade away and a new interactive map corresponding to the dynamic map (e.g., they both describe the same location) can take the spot of the previous interactive map.

The disclosed configurations provide numerous advantages over the conventional models. One example advantage of the system is to provide a user a quick shortcut to locations predefined by a user (e.g., favorite locations or regularly visited locations). For example, rather than spending substantial time on searching to find a route to each of a few locations, the system can record the locations selected by the user (e.g., regularly visited locations or locations selectable from an address on a web site or address book) and suggest the best possible routes to all of the selected locations upon a single tap of the user. Additionally, in another example, the system advantageously provides the user information to determine the best place to stay based on points of interest (POI), or helps the user navigate to multiple points of interest within a new city.

Yet another example advantage of the disclosed embodiments is that the system renders the maps in a “stack-like” manner. For example, the map that is visually displayed in the user interface on top most displays live data that can be interacted with by the user is an interactive map. The maps that are below (or under) the interactive map can be selected through a portion of such map that is visually displayable in the user interface. When selected, that map is “raised” to the top and becomes an interactive map that is relevant in terms of current location information. The prior interactive map can be entirely removed from the user interface or dropped under the current interactive map within the stack of maps.

As noted, the stack of maps includes one or more dynamic maps below the interactive map. These dynamic maps below the interactive map are collapsed below the interactive map. Collapsed below includes layered below or folded below. These maps, although not entirely visible in the user interface, are dynamic as the information within each of them is dynamically updated. For example, direction information about multiple locations and corresponding related information about those locations (e.g., a business hours of operations, reviews of business at that location), relative distances between locations, and any other type of information can be updated. An advantage of updating the information in the dynamic maps, despite not being immediately visible in the user interface, is that such information is immediately provided for display in the user interface when the stacked dynamic map becomes the current (or new) interactive map. Hence, the system is faster and more efficient in providing information within a map compared to conventional configurations.

Example Computing Environment

FIG. 1illustrates an exemplary computing environment100for rendering a stack of maps according to one embodiment. The computing environment100includes one or more servers (generally, server)110, one or more client devices (generally, client device)170A-N and one or more databases (generally, database)130connected by a network150. Only one server110, two client devices170and a database130are shown inFIG. 1in order to simplify and clarify the description. Alternate or additional embodiments of the computing environment100can have multiple servers110and databases130, and more than two client devices170connected to the network150. Likewise, the functions performed by the various entities ofFIG. 1may differ in different embodiments. An example computing configuration of the server devices (or server)110, client devices (or clients)170and database systems (or database)130is described inFIG. 2.

The server110is configured to collect user data (or information) to provide for rendering (or providing for display) multiple maps within a user interface of a client device170. For example, the user data can describe a destination input (or selected) by the user to the client device170. In addition, the user data can also identify a current location of the user. Alternatively, the user data may include recommended sets or popular sets of destinations that are either pre-loaded or that the user has affirmatively selected, e.g., top tourist spots, most popular restaurants, point of interest, etc. Furthermore, the user data can describe one or more locations favored by the user. For example, the user can use the client device170to select one or more locations that the user regularly visits (e.g., a supermarket, an entertainment place, an attraction, a school, a working place, etc.) as a pre-defined (e.g., favored) location. For each location, the server110generates map data to provide for rendering a stack of maps, each corresponding to a particular location.

After generating each map, the server110organizes the stack of multiple maps. This organization includes an interactive map and a set of collapsed dynamic maps. An interactive map is a map that allows the user to interact within that map (e.g., pan, zoom, etc.). The interactive map is the map immediately visible within the user interface on the client170. The interactive map also is dynamic so locational information captured through the device can subsequently be illustrated within the user interface of the device. The interactive map also can illustrate a route from a start (or origin) location to an end (or destination) set by the user.

Each dynamic map below the interactive map can be a screen shot (or image) of a map corresponding to a particular location. The screen shot corresponds to a particular location and surrounding area. The amount of area displayed within the screen shot can be predefined by the user, e.g., an radius corresponding to a predefined distance from the location that is the center point of the map. Although a dynamic map is not “interactable” due to the map itself not being fully viewable within the user interface on the client device, information within it is updated as the device updates location related information (e.g., current global positioning system (GPS) coordinates, cell phone tower location, magnetometer/compass, or WiFi information). In addition, a portion of the collapsed dynamic map is selectable so that in response to selection of the selectable area, that map becomes the new interactive map and the prior interactive map is moved in the user interface to be either discarded or returned to the collapsed stack of maps.

Additionally, the server110sends (or transmits) the map data to provide for rendering the stack of multiple maps on the client device170. For example, the interactive map can be displayed on top of the set of collapsed dynamic maps in a user interface such as one of the example user interfaces of maps shown in any ofFIGS. 8-11. Further, the server110may update the map data to replace one of the collapsed dynamic maps with an interactive map corresponding to the collapsed dynamic map. For example, a screen shot map about a location can be replaced by rendering an interactive map corresponding to the same location so that the user can now interact with the map. In addition, the server110can send the updated map data to the client device170for displaying the new interactive map to replace the position of the previous interactive map.

In one embodiment, the server110includes a map module115A (collectively and individually also referred to generally as115) to mainly perform the functions of the server110described above. The map module115and the functions will be described in further detail below with reference toFIG. 3. Other embodiments of the server110may include different and/or additional components. In addition, the functions may be distributed among the server110, database130, and client device170in a different manner than described herein. For example, the map module115may be completely or partly stored on one or more of the client devices170, illustrated as a map module115B inFIG. 1.

A client device170is an electronic device used by a user to perform functions such as interacting with navigation maps, consuming digital content, executing software applications, browsing websites hosted by web servers on the network150, downloading files, and interacting with the server110. For example, the client device170may be a dedicated e-Reader, a smartphone, a wearable device (e.g., a smartwatch or pendant), or a tablet, a laptop, a notebook, or desktop computer configured similar to a computing system described withFIG. 2.

The client device170also includes interfaces with a display device on which the user may view the visualizations such as graphical user interfaces (GUIs) showing maps. In addition, the client device170provides a visual user interface (UI) that is rendered on a screen (or display). The screen may be touch sensitive and responsive to gestures. If the screen is not touch sensitive, the user interface also may include on-screen buttons. The user can interact directly with the rendered user interface (e.g., using gestures) and/or the rendered buttons. The rendered user interface provides an interface for the user to interact with the client device170and to perform functions. Examples of functions include selecting between maps, manipulating elements on the maps, inputting a destination, selecting a destination, zooming in or out of the maps, and any other possible interactions.

In one embodiment, the client device170includes the map module115B and the visualization module177, but other embodiments of the client device170include different and/or additional components. In addition, the functions may be distributed among the components in a different manner than described herein.

The visualization module177renders visualizations based on the map data generated by the map module115, either residing on the server110, or stored completely or partly on the client device170. For example, the visualization module177renders a GUI displaying a stack of multiple maps that includes an interactive map and a set of collapsed dynamic maps, etc., based on the generated and/or updated map data by the map module115.

The database130stores any data that is necessary for the server110and/or the client devices170to implement the functionalities described herein. For example, the database130stores the user data describing users' favorite locations. The database130may also store the map data describing the stack of interactive map and dynamic maps.

The network150, which can be wired, wireless, or a combination thereof, enables communications among the server110, client devices170, and the database130and may include the Internet, a LAN, VLAN (e.g., with VPN), WAN, or other network. In one embodiment, the network150uses standard communications technologies and/or protocols. In another embodiment, the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above.

Computing Machine Architecture

FIG. 2is a block diagram illustrating components of an exemplary machine able to read instructions (e.g., software or program code) from a machine-readable medium and execute them in a processor (or controller). The example machine shows one or more components that may be structured, and operational, within a client device170and/or a server device110as well as a standalone database130. Specifically,FIG. 2shows a diagrammatic representation of a machine in the example form of a computer system200within which instructions224(e.g., software or program code) for causing the machine to perform any one or more of the methodologies discussed herein may be executed. The methodologies can include the modules described withFIG. 1and subsequently herein. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

The example computer system200includes one or more processors (generally processor202) (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more application specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination of these), a main memory204, and a dynamic memory206, which are configured to communicate with each other via a bus208. The computer system200may further include graphics display unit210(e.g., a plasma display panel (PDP), a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)). The computer system200may also include alphanumeric input device212(e.g., a keyboard), a cursor control device214(e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), a storage unit216, a signal generation device218(e.g., a speaker), and a network interface device220, which also are configured to communicate via the bus208. In addition, the computer system200may include one or more positional sensors, e.g., an accelerometer or a global position system (GPS) sensor, connected with the bus208. In addition, the network interface device220may include a WiFi or “cellular” mobile connection that also can be used to help identify locational information.

The storage unit216includes a machine-readable medium222on which are stored instructions224embodying any one or more of the methodologies or functions described herein. The instructions224may also reside, completely or at least partially, within the main memory204or within the processor202(e.g., within a processor's cache memory) during execution thereof by the computer system200, the main memory204and the processor202also constituting machine-readable media. The instructions224(e.g., software) may be transmitted or received over a network226via the network interface device220. It is noted that the database130can be stored in the storage216although it also can be stored in part or whole in the memory204.

Example Map Module

Referring now toFIG. 3, a block diagram shows a map module115according to one example embodiment. In the example embodiment shown, the map module115has an initialization module310, an interaction module320and a transition module330. Those of skill in the art will recognize that other embodiments of the map module115can have different and/or additional modules other than the ones described here, and that the functions may be distributed among the modules in a different manner. In addition, it is noted that the modules may be configured as computer program code (or software) comprised of instructions, e.g., instructions224, storable in a storage unit, e.g.,216,222,224, and executable by one or more processors, e.g., processor202.

The initialization module310collects user data of a user (e.g., via a user account, direct input from a user, metadata associated with usage of the device, etc.) for rendering one or more maps based on the user data. In one embodiment, the initialization module310collects user data of a user from components (e.g., applications) of the client device170, the database130, the server110or other servers (not shown) such as a third-party server storing user data related to the user. The user data may describe a desired location the user intends to go to. For example, the user data can describe a destination that is input to the client device170by the user of the client device170. The user data may additionally describe one or more locations, for example, that the user previously reviewed or visited. For example, the user data describes a location (e.g., home, a supermarket, an entertainment place, an attraction, a school, a working place, etc.) that the user has selected as a favorite location. Further, the user data may describe a context of the user. For example, the user data may describe a current location of the user detected by Global Positioning System (GPS) equipment, or other type of sensor included in the client device170. Alternatively, the user data may include recommended sets or popular sets of destinations that are either pre-loaded or that the user has affirmatively selected, e.g., top tourist spots, most popular restaurants. Furthermore, the user data can describe one or more locations favored by the user. In addition, the initialization module310also collects other types of data that can be helpful for rendering maps for the user. For example, the initialization module310collects road information, traffic condition information, routing information, etc. for rendering maps for the user along with the user data.

In one embodiment, the initialization module310uses the user data and the other type of data to generate map data corresponding to program code for rendering one or more maps on the user device. For example, based on selection of a predefined, e.g., “favorite,” location, the initialization module310can generate map data to render a map for the stack of maps that correspond with the location that the user selected as favorite. In one example embodiment, the map data for a map includes program code to provide for a rendering of a map on a user interface on the user device. In addition, there can be program code to render a zoom level for the map and/or code to render center coordinates of the map relative to a defined area within the map. The map data for a map may additionally include other information necessary for rendering the map on the client device170. For example, the map data for a map describing a favorite location of the user may include an estimated time and distance from the favorite location to the current location of the user.

In one embodiment, the initialization module310determines map data to provide for rendering a map, for example, that corresponds with a screen captured map. For example, the map may be composed of a “screen shot” (e.g., program code for a user device to display the map) of a location that was just entered, selected or pre-defined. In one embodiment, the screen shot map related to a location may be static in terms of visual appearance, but also is dynamic relative to data displayed within it. As data, e.g., updated GPS coordinates, is captured by a client device, e.g.,170, the screen shot map may be updated accordingly. For example, a wider range of the map may be displayed or there may be a zoom around the area of interest. This will render an updated screen shot. Whether the screen shot map is re-rendered with a new screen shot map or not, the data within it may be updated, e.g., distance to a location of interest in the map relative to current location coordinate of the client device, e.g.,170. Hence, even though the map is not immediately visible on the user interface of the client device, the instructions corresponding to rendering of the map and/or data within it can be updated. Accordingly, these maps below the interactive map also can be referred as to as “dynamic” maps. As for the map that is within the field of view of the user interface, that also is rendered as a dynamic map, but also is an interactive map as the user is able to interact with that map when visible within the user interface. The initialization module310also may determine how to visually display the overall stack of maps corresponding to the map data for displaying multiple dynamic maps. For example, it can provide to display the stack of maps as being collapsed at the edge of a user interface on the user interface within the screen of the client device170. Examples of a user interface will be described in detail with reference to one or more ofFIGS. 8-11.

In addition to a dynamic map, the initialization module310also generates map data for rendering an interactive map to the user. The interactive map includes live data that a user can interact with on the user device. For example, the interactive map can update as the user moves. The interactive map is interactive in that it can be manipulated, e.g., panned, zoom in, and zoom out, by a user. The interactive map can also show the current location of the user. In one embodiment, the interactive map can be rendered based on selection of previously stored locations, such as home, a work place, a shop, a grocery store, etc. The initialization module310may determine the map data for displaying the interactive map as the top most one in the stack (e.g., a stack is similar to a stack of cards) of maps. In other words, the interactive map is displayed on top of any dynamic maps in the stack so that the user can interact with the interactive map conveniently. Accordingly, the location described by the interactive map may be referred to as the “location in focus,” which in one example embodiment can be centered within a user interface.

In one embodiment, the initialization module310determines the map data for rendering an interactive map about a location and dynamic maps about other locations based on a preset rule. For example, the rule can be automatically determined based on GPS location or system rules or configuration (e.g., location name and pin points data pre-determined relative to map) and/or (b) manually determined by the user (e.g., only show certain data such as all gas stations around point of interest) and/or a third party that may offer predefined “points of interests” to load into the app (e.g., corresponding to advertisement offerings for a place of business within the map area). For example, based on the predefined (or preset) rule, the initialization module310determines the current location of the user as the location in focus and generates map data for rendering an interactive map about the current location, while rendering multiple dynamic maps about other locations (e.g., the user's favorite locations other than the current location). Alternatively, a preset rule may specify the home of the user is always the location in focus. Accordingly, the initialization module310generates map data for rendering an interactive map about the home of the user, while rendering multiple dynamic maps about other identified, predefined, or selected locations as defined by the user and potentially stored by the user.

The map data generated by the initialization module310can be referred to as “map data at setup stage.” In one embodiment, the initialization module310stores the map data at setup stage in the database130for rendering maps to the user upon a user request.

The interaction module320retrieves the map data and sends the map data to the client device170. This information, provided by the interaction module320, provides the client device170information (e.g., data and/or program code) for rendering the stack of maps in the user interface. This information may be rendered responsive to detecting a request for maps from the user. For example, the user uses the client device170to request one or more maps through a map application or software stored on the client device170. The interaction module320retrieves the map data responsive to the user's request and sends the map data to the client device170. The client device170can then display the stack of maps to the user in the user interface.

In one embodiment, the interaction module320may update the retrieved map data to render an interactive map about a current location of the user when the user requests maps for display. In another embodiment, the interaction module320may send the map data for rendering an interactive map about the home of the user without any change to the map data if the interactive map is always determined to be about the home of the user based on the preset rule.

In addition, the interaction module320may also update the map data for rendering the interactive map responsive to detecting an update of the current location of the user. For example, if the interactive map corresponds with the current location of the user based on data from the client device, e.g., GPS coordinates, the interaction module320updates the map data to reflect the change of the current location on the interactive map.

Alternatively, by way of example, if the interactive map corresponds to home or any other favorite location selected by the user, as the user is driving or travelling to that destination, the current location of the user changes with time as data from the client device, e.g., GPS coordinates, are continually updated. Hence, the route path, the estimated time, and distance to that location may correspondingly change with time. Therefore, the interaction module320updates the map data to reflect the change of the route path, estimated time and distance, to that location on the interactive map.

Further, the interaction module320may update the map data for rendering the dynamic maps responsive to detecting an update of the current location of the user. Each dynamic map corresponds with a specific location. For example, each dynamic map may be about a previously stored favorite location of the user. In response to detecting a change of the current location of the user (e.g., when the user is driving), the interaction module320updates the map data to reflect changes of estimated time and distance, and/or the route to the favorite location on each dynamic map. For example, the interaction module320updates the map data to display the changed estimated time and distance to the favorite location on the each dynamic map based on the updated current location of the user.

As an example, assume that a user starts from home to do a shopping trip to three shops (e.g., shop A, shop B, and shop C) that the user usually goes to and has been selected as favorite locations. The user opens an application on the client device170for requesting maps about the shops. Accordingly, the interaction module320retrieves the map data for rendering an interactive map about the current location of the user (e.g., home), three dynamic maps about the shop A, shop B, and shop C, and possibly other dynamic maps about other locations selected by the user. As the user is driving to shop A, the interaction module320detects (or receives) the updated coordinates of current location via a sensor, e.g., GPS, equipped with the client device170. The interaction module320updates map data for the interactive map about the home, the dynamic maps for the shop A, shop B and shop C by calculating new estimated time and distance relative to a current location and/or between locations, and/or route to the location described by each of the maps.

In one embodiment, the interaction module320updates the stack of maps by removing map information (e.g., program code for rendering a map and corresponding data within it) about a location or adding a new map information corresponding to a new location based on the user de-selecting or removing a location and selecting a new location, respectively. For example, responsive to the user selecting a new location as a favorite location, the interaction module320generates map data for rendering a new map about the new favorite location in the stack of maps. Additionally, responsive to the user de-selecting one of the favorite locations (e.g., the user tapping a “star” button on one of the dynamic maps about a favorite location to an “unselected” state), the interaction module320updates the map data for removing the dynamic map about the de-selected favorite location from the stack of maps.

Further, in one embodiment, the interaction module320updates the map information for rendering more details within the dynamic maps. For example, the user can interact with the dynamic map by swiping on a visible portion of the dynamic map within the user interface. In response to detecting the user swiping on the dynamic map, the client device170transmits this instruction to the interaction module320, which updates the map information to provide for the display of more function buttons for the user, such as a favorite “star” button, a “to here” button and a “from here” button, which can be further interacted with by the user. This will be described in detail with reference toFIG. 11.

The transition module330updates the map data to replace one of the collapsed dynamic maps with an interactive map corresponding to the dynamic map that has been selected or previously identified by the user. For example, assume the dynamic map describes a favorite location “A” selected by the user. As defined above, the dynamic map may be only a screen captured map about the location “A” and cannot be interacted with by the user. An interactive map corresponding to the dynamic map includes live map data related to the location “A” that can be interacted with by the user. For example, the user can tap a “from here” button of the interactive map to request direction and/or a route from the location “A” to the current location. Alternatively, the user can tap a “to here” button of the interactive map to request direction and/or a route from the current location to the location “A”. In one embodiment, the interactive map is rendered as zoomed and panned programmatically to the point, which makes it look exactly the same as the corresponding screen captured map. In addition, the replaced dynamic map can be faded away.

As described above, the interactive map is rendered by the client device170on the top of the stack of maps within the user interface. In one embodiment, responsive to the user scrolling the stack of maps such that one of the dynamic maps expands and takes the top spot of the stack, the transition module330updates the map data for replacing the present interactive map in the top spot with an new current interactive map corresponding to the dynamic map. The replaced interactive map can be removed visually from the user interface, e.g., deleted or dropped under the new interactive map.

By way of example, assume an interactive map about location “A” is rendered on the top most of the stack of maps. The user scrolls the stack of maps to make a dynamic map about location “B” take the top spot. Correspondingly, the transition module330determines map data for rendering an interactive map about the location “B” corresponding to the dynamic map about the location “B”. For example, the transition module330determines the map data for displaying the interactive map about the location “B” on the top most of the stack replacing the position of the previously displayed interactive map about the location “A.” In addition, the transition module330may determine the map data to remove the corresponding dynamic map from the set of collapsed dynamic maps. In this way, any map in the top spot of the stack is an interactive map that can be interacted with by the user. This beneficially allows the user to conveniently select a map from the stack and interact with the selected map.

Alternatively, responsive to receiving updated GPS coordinates that correspond with the current location of the client device170and that are displayed within the interactive map the transition module may determine that those coordinates match those of one of the dynamic maps. The transition module330updates the map information to provide for rendering a new interactive map corresponding to the one dynamic map at the top most of the stack. In the example of the user taking a shopping trip to the three shops A, B, and C, assume that the currently displayed interactive map is about the home of the user. When the user reaches shop A, the GPS coordinates of the currently displayed interactive map matches those of the dynamic map of the shop A, and the transition module330updates the map data for displaying an interactive map about the shop A corresponding to the dynamic map of the shop A on the top most of the stack. In one embodiment, the transition module330also updates the map data to replace the previously displayed interactive map (e.g., the interactive map about the home) with a corresponding dynamic map (e.g., a dynamic map about the home) and renders the dynamic map in a position of the stack of maps (e.g., at the bottom of the stack).

Further, in another embodiment, the system can be configured to include instructions that help keep use of computing resources efficient. For example, if the transition module330receives information from the client device170that the map information within a current interactive map matches one of the dynamic maps, there may be instructions provided that notes that the current interactive map matches one of the collapsed dynamic maps. In this case, there may be no need to provide a rendering to replace the interactive map corresponding to the one dynamic map, although the instructions may allow updating select information that is not in the current interactive map with any additional data found (or not found) in the matching dynamic map. Hence, the amount of data needed to be transferred is limited thereby saving network bandwidth and power on the client device170.

In one embodiment, the transition module330updates the map data for replacing a view of the stack of maps (may also be referred to as a “stack view”) with a full screen map view (may also be referred to as a “full screen view”). For example, the user may interact with the user interface showing the stack of maps by tapping an arrow button to shift to a full screen view. This will be described with reference toFIG. 10. Responsive to detecting the user tapping on the button, the transition module330updates the map data for rendering (e.g., displaying) the current interactive map in a full screen view in the user interface so that the user can more easily interact with the map. Additionally, when detecting the user tapping a button to shift back to the stack view, the transition module330updates the map data for displaying the stack of maps that includes the interactive map displayed on the top as well as a set of collapsed dynamic maps displayed at the edge of the user interface.

Example Processes

FIG. 4is a flowchart illustrating an example method400for rendering a stack of maps according to one embodiment. In one embodiment,FIG. 4attributes the steps of the method400to the map module115of the server110. However, some or all of the steps may be performed by other entities such as the client devices170. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps. Also, it is noted that in one example embodiment the steps and/or modules may be embodied as instructions, e.g., instructions224, that may be executed by the processor202described with respect toFIG. 2.

Initially, the map module115collects410user data for rendering maps to a user. As described previously with regard toFIG. 3, the user data may describe a destination input by the user, a current location of the user detected by a sensor equipped with the client device170, and/or a favorite location selected by the user.

At step420, the map module115generates map data for rendering a stack of multiple maps, for example, with an interactive map on top of a set of collapsed dynamic maps. This step420will be described in detail with reference toFIG. 5.

At step430, the map module115updates the map data to replace one collapsed dynamic map with an interactive map corresponding to the dynamic map. Two embodiments for this step430will be described in detail with reference toFIGS. 6-7. At step440, the map module115sends the map data for rendering the stack of maps, for example, to the client device170of the user.

At step450, the map module115updates the map data for rendering an updated stack of maps, for example, responsive to the user favoring or un-favoring one or more of the maps in the stack. For example, responsive to the user selecting a new location as a favorite location, the map module115updates the map data for adding a new dynamic map about the new location into the stack of maps. Additionally, responsive to the user unselecting a favorite location, the map module115updates the map data for removing the dynamic map about the unselected favorite location from the stack of maps.

FIG. 5is a flowchart illustrating an example method500describing the step420of the method400in detail for generating map data for rendering a stack of maps with an interactive map on top of a set of collapsed dynamic maps according to one embodiment. In one embodiment,FIG. 5attributes the steps of the method500to parts of the sub-modules in the map module115of the server110or the client device170. However, some or all of the steps may be performed by other entities. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps. Also, it is noted that in one example embodiment the steps and/or modules may be embodied as instructions, e.g., instructions224, that may be executed by the processor202as described with respect toFIG. 2.

Initially, the map module115determines510map data for rendering the interactive map based on the current location of the user. For example, the interactive map includes live data that can be interacted with by the user. The map module115may determine the map data to display an interactive map about the current location of the user. The interactive map may also include other information.

At step520, the map module115determines map data for rendering the set of collapsed dynamic maps based on the user's selection. For example, the user has selected favorite locations. The map module115determines map data for a set of dynamic maps describing the selected favorite locations. The set of dynamic maps may be displayed as collapsed at the edge of the user interface on the screen of the client device170. In one embodiment, each dynamic map may also include an estimated time and distance from the current location of the user to the favorite location described by the dynamic map.

At step530, the map module115detects an update of the user's current location. For example, the map module115receives sensor data describing the user's current geographical location from a sensor equipped with the client device170and detects whether the current location has changed since last sensing time.

At step540, the map module115updates the map data for rendering the interactive map responsive to detecting an update of the user's current location. For example, the map module115may update map data for displaying another interactive map describing the updated current location of the user.

At step550, the map module115updates the map data for rendering each of the collapsed dynamic maps responsive to detecting an update of the user's current location. For example, the map module115may update the estimated time and distance from the updated current location of the user to the favorite location described by each of the dynamic maps.

Referring now toFIGS. 6 and 7, illustrated are flowcharts of two exemplary methods600and700that describe the step430of the method400for updating map data to replace one of a collapsed dynamic map with an interactive map according to one embodiment.FIGS. 6 and 7attribute the steps of the methods600and700to parts of the sub-modules in the map module115of the server110or the client device170. However, some or all of the steps may be performed by other entities. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps. Also, it is noted that in one example embodiment the steps and/or modules may be embodied as instructions, e.g., instructions224, that may be executed by the processor202described with respect toFIG. 2.

Referring toFIG. 6, the map module115detects610a user scrolling a collapsed dynamic map. For example, the map module115detects (or receives information corresponding to an action from the client device170) that the user scrolls one of the collapsed dynamic maps (e.g., a dynamic map about location “X”) such that the collapsed dynamic map (e.g., the dynamic map about location “X”) expands and takes the top spot of the stack of maps. The map module115determines620the map data for rendering an interactive map corresponding to the collapsed dynamic map responsive to the detection. For example, the map module115determines the map data for rendering an interactive map about the location “X” corresponding to the dynamic map about the location “X”. At step630, the map module115sends the map data to client for replacing the collapsed dynamic map with the corresponding interactive map. For example, the corresponding interactive map about the location “X” is displayed at the top spot of the stack of maps and the dynamic map about the location “X” is faded away.

Referring now toFIG. 7, another example method700for the step430of updating map data to replace one of a collapsed dynamic map with an interactive map is illustrated in detail. The step430initiates the map module115by detecting710a match between GPS coordinates of the current interactive map and one collapsed dynamic map. For example, one collapsed dynamic map is about location “A”. When the user reaches the location “A”, the current interactive map may match the collapsed dynamic map in GPS coordinates.

At step720, the map module115determines map data for rendering an interactive map corresponding to the collapsed dynamic map responsive to the detection. At step730, the map module340sends the map data to client for replacing the collapsed dynamic map with the corresponding interactive map.

Example User Interfaces

Referring now toFIGS. 8-11, illustrated are example graphical representations for user interfaces displaying different aspects of a stack of maps. For example, the graphical user interfaces (GUIs) are generated by the visualization module177of the client device170. It is noted that generation of the user interfaces is through program code that is stored in a storage device, e.g., storage unit216or main memory204, and executable by a processor, e.g., processor202, of a client device170. The instructions may be generated by the server110or the client device170depending on where the particular modules described herein corresponding to the particular functions (and corresponding instructions) are executing. In some embodiments, a user may interact with the GUIs using a touchscreen input by “tapping” on UI elements within the GUIs. In other embodiments, the user may interact with the GUIs using other methods, such as via a pointing device (e.g., a computer mouse).

FIG. 8illustrates a GUI800showing a stack of maps. In the illustrated embodiment, the GUI800includes an interactive map810that has live data. InFIGS. 8-11, interactions with the user interface by an example user are also illustrated as830. For example, the interactive map810is about the current location of the client device170. The interactive map810is displayed on the top most of the stack of maps and can be interacted with by the user of the client device170. For example, the map module115determines map data and transmits the map information to the client device170for displaying the interactive map810on the top most of the stack of maps.

The GUI800also includes a set of collapsed dynamic maps820(as also indicated by labels “Work”, “Fedex” and “Safeway” in the exemplary GUI800). Each of the set of collapsed dynamic maps820may be a screen shot (e.g., determined by the map module115) describing a favorite location selected by the user. Each of the set of collapsed dynamic maps820may also include an estimated time and distance from the current location of the user and the predefined location described through the dynamic map. The set of collapsed dynamic maps820is displayed at the edge (e.g. bottom edge) of the GUI800and can be scrolled by the user.

FIG. 9illustrates a GUI900showing a transition of a dynamic map to an interactive map that corresponds to the dynamic map. The GUI900includes a dynamic map910originally collapsed at the edge of the GUI900. As illustrated inFIG. 9, a user scrolls (illustrated by user interaction920relative to displayed maps) the dynamic map910so that the dynamic map910expands and can take the top spot of the stack of maps in the GUI900. In one embodiment, responsive to the dynamic map910taking the top spot of the stack, the map module115updates the map data for replacing the dynamic map910(e.g., the screen shot) with an interactive map that corresponds to the dynamic map910. The new interactive map can be displayed on the top most of the stack and can be interacted with by the user.

FIG. 10illustrates a GUI1000showing an interactive map in a full screen view. The full screen view may be activated on a device when a user performs a specific interaction with the interactive map on the non-full screen view. For example, the user may double tap on the interactive map using a touchscreen interface. The GUI1000includes a shift button1010that can be tapped by the user to change back to a stack view showing the stack of maps such as those shown in GUIs800and900. For example, responsive to the user tapping on the shift button1010, the map module115updates the map data to shift between different views of the maps. The GUI1000includes an address box1005having a selected location automatically input. The selected location is the location described by the interactive map. The GUI1000also includes, in the interactive map, an indicator1008that shows the selected location.

In addition, the GUI1000includes a “star” button1020that can be tapped by the user to select or unselect the location described by the interactive map as a favorite location. As illustrated inFIG. 10, the GUI1000also includes a “from here” button1030and a “to here” button1040that can be tapped by the user to request direction or route information about a trip from the selected location to the current location of the user and a trip from the current location to the selected location, respectively. For example, responsive to the user tapping the “from here” button1030, the map module115updates the map data for displaying a route from the selected location to the current location of the user on the interactive map.

FIG. 11illustrates GUIs1100and1150showing the adding or removing of a favorite location under two different views, respectively. The GUI1100shows a way to remove a favorite location in the stack view. The GUI1100includes multiple dynamic maps collapsed at the edge of the GUI1100. Each dynamic map can be swiped1020by the user to show one or more interactive buttons including a “star” button1110, a “to here” button, and a “from here” button that are the same as those in the GUI1000. The “star” button1110can be tapped by the user to remove the location described by the dynamic map from favorite locations. Accordingly, responsive to the user tapping the “star” button1110to unselect the location described by the dynamic map, the map module115updates the map data for removing the dynamic map about the unselected location from display.

The GUI1150shows a way to add or remove a favorite location in a full screen view. Similar to the GUI1000, the GUI1150includes a “star” button. The “star” button has two states1160and1170indicating the location described by the GUI1150is selected and unselected as a favorite location, respectively. Therefore, the user can tap the “star” button to change the state of the button to select and unselect the location as a favorite location. Responsive to the user's selection, the map module115can update the map data for adding or removing the corresponding map describing the location from the stack of maps.

Additional Configuration Considerations

Accordingly, as described above, the system and method for rendering stack of map user interfaces that provide numerous advantages over the traditional model. For example, the system can provide a user a quick shortcut of a map to the user's favorite locations that the user can immediately interact with. In addition, the system can suggest the user the best possible routes to a particular location upon a single action, e.g., tap or swipe, by a user on a client device. Thereafter, other maps corresponding to other locations of interest can be “stacked” below the interaction map and, when brought to the top of the stack, can be the new interaction map.

Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a system and a process to provide for and/or render of stack of maps in a user interface. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein. Various modifications, changes and variations, which will be apparent to those skilled in the art, may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope defined in the appended claims.