Patent Description:
Computerized systems provide a way of determining routes to destination addresses. The computerized systems can find user-specified addresses on a map, and provide routes between multiple addresses. Mapping and routing can have various applications, such as helping groups of people coordinate travel and directing drivers of vehicles to locations the drivers may be unfamiliar with. For example, mapping and routing systems may provide street names to a driver as the driver approaches turns along a route if the systems have data about the names of the streets along the route. However, it can be difficult to provide meaningful navigation instructions to a driver if the mapping and routing systems do not have information about street names or if the driver is travelling through a region in which one or more streets do not have street names. <CIT> proposes a method of operating a navigation system to provide a route guidance message for traveling a route. A preferred name of a feature visible from a road segment is obtained from a geographic database associated with the navigation system. A guidance message stating the preferred name of the feature visible from the road segment is determined. The preferred name includes at least one visible descriptor selected from a group consisting of a color of the identified feature, a building material of the identified feature, a shape of the identified feature, an architectural style of the identified feature, and a decorative element of the identified feature. <CIT> proposes systems, apparatus and methods for facilitating mobile station (MS) location determination using MS captured images of known points of interest (POIs). In some examples, each POI is associated with a corresponding visibility map comprising a set of grid points, and a subset of the POIs may be identified from the MS captured images by matching the MS captured images of each POI in the subset with corresponding stored images. A cumulative grid point weight for a plurality of grid points in the visibility maps associated with the POIs in the subset may be computed. The cumulative grid point weight for each grid point represents the probability that the MS is located at that grid point. The location of the MS may be estimated based on the cumulative grid point weights of the plurality of grid points.

According to first aspect of the present invention, there is provided a computer-implemented method as set out in claim <NUM>. According to a second aspect of the present invention, there is provided a non-transitory computer-readable storage medium as set out in claim <NUM>. According to a third aspect of the present invention, there is provided a computer system as set out in claim <NUM>.

The features and advantages described in this summary and the following detailed description are not all-inclusive. Many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims hereof.

The figures depict an embodiment of the invention for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.

A system identifies points of interest (POIs), e.g., landmarks, to a user in a graphical user interface (GUI) according to a level of visibility of the POI from the user's location. For example, a navigation system can inform a user operating a vehicle (e.g., a car) to turn when a particular landmark becomes visible to the user from within the vehicle. Such information about POIs can be especially useful in regions where roads do not have names, or when the system does not have data about road names.

The system stores data about the visibility of individual POIs. For example, the system may store a visibility map of the visibility of each POI within a region. A visibility map may be in the format of a heat map or a choropleth map in that it associates regions of a geographic area with a value that represents the intensity, amount, or ease of visibility of a POI from each region. Such a visibility map may include data about locations from which a POI is visible, distances at which the POI is visible, portions of the POI that are visible from different locations, headings in which a POI is visible, descriptions related to the POI, etc..

The system keeps track of which POIs are visible from different geographic areas by storing identifiers of POIs in logical data groupings related to the geographic areas from which the POIs are visible. Such geographic data groupings are herein referred to as "road bins". More specifically, a road bin is a data structure that stores data in relation to a geographic location. For example, a road bin may be defined by a geofence around a portion of a road segment on a map. Data related to a location along a road may be stored and accessed via the road bin that includes the location. The POI visibility maps are used to determine which POIs should be associated with each road bin. Conceptually, a road bin stores information identifying POIs having visibility maps that indicate that the POI is visible from at least one position within the road bin. In one embodiment, multiple road bins may be associated with the same area of a map, each of the road bins representing a heading (e.g., a road bin associated with a northbound heading may include POIs that are visible to users in the road bin area who are facing or moving north). This creates a mapping between specific visible POIs and the road bins from which they are visible.

As a user moves along a route, the user device may send a query to the system requesting a set of POIs that are visible from the user's current location. When sending such a query, the user device also sends positional data about its current location and heading, for example, GPS coordinates. In some embodiments, the query may further include requests for specific metadata about the visible POIs (e.g., description, distance, name, an image, etc.). The system determines a road bin that includes the location of the user, and determines the visible POIs that are associated with the road bin. In embodiments that use different road bins associated with specific headings, the system determines a road bin that includes the user's location and the user's heading. In some embodiments, the system may additionally determine a subset of the visible POIs to present to the user. The set of POIs that are visible from the user's location (as well as any requested metadata about the POIs) is subsequently transmitted to the user device.

<FIG> is a block diagram of a system for identifying POIs that are visible from a location, in accordance with some embodiments. <FIG> includes user device <NUM>, network <NUM>, and system <NUM>. For clarity, only one user device <NUM> is shown in <FIG>. As shown in <FIG>, system <NUM> further comprises map data store <NUM>, visibility map generator <NUM>, road bin store <NUM>, and POI display manager <NUM>. Alternate embodiments of the system environment can have any number of user devices <NUM> as well as multiple systems <NUM>. The functions performed by the various entities of <FIG> may vary in different embodiments. System <NUM> may provide routing, direction, and timing information to user device <NUM>. In some embodiments, system <NUM> may coordinate travel for a user, for example, by reporting information about a requested route to the user or by providing the user with information about POIs along the route.

A user may interact with system <NUM> through user device <NUM>. For example, a user may enter origin and destination information when requesting information about a route. User devices <NUM> can be personal or mobile computing devices, such as smartphones, tablets, or notebook computers. In some embodiments, user device <NUM> executes a client application that uses an application programming interface (API) to communicate with system <NUM> through network <NUM>.

Client applications that are configured to interact with system <NUM> can present information received from system <NUM> on a user interface of user device <NUM>. Information presented by such applications may include a map of the geographic region, the current location of user device <NUM>, estimated trip duration, and POIs associated with a route. The client application running on user device <NUM> may be able to determine the current location of user device <NUM> and provide the current location to system <NUM>.

User devices <NUM> can communicate with system <NUM> via network <NUM>, which may comprise any combination of local area and wide area networks employing wired or wireless communication links. In some embodiments, all or some of the communication on network <NUM> may be encrypted.

System <NUM> includes various modules and data stores to determine POIs that are visible from different locations and to determine which POIs to present to a user of user device <NUM>. System <NUM> comprises map data store <NUM>, visibility map generator <NUM>, road bin store <NUM>, and POI display manager <NUM>. Computer components such as web servers, network interfaces, security functions, load balancers, failover servers, management and network operations consoles, and the like are not shown so as to not obscure the details of the system architecture. Additionally, system <NUM> may contain more, fewer, or different components than those shown in <FIG> and the functionality of the components as described herein may be distributed differently from the description herein.

Map data store <NUM> stores maps of geographic regions in which system <NUM> generates routes, identifies POIs, and offers trip coordination services. The maps contain information about roads within the geographic regions. For the purposes of this disclosure, roads can include any route between two places that allows travel by foot, motor vehicle, bicycle or another form of travel. Examples of roads include streets, highways, freeways, trails, bridges, tunnels, toll roads, waterways, airways, or crossings. Roads may be restricted to certain users, or may be available for public use. Roads can connect to other roads at intersections. An intersection is a section of one or more roads that allows a user to travel from one road to another. Roads may be divided into road segments, where road segments are portions of roads that are uninterrupted by intersections with other roads. For example, a road segment would extend between two adjacent intersections on a surface street or between two adjacent entrances/exits on a highway.

Map data store <NUM> also includes map features, which may be stored in association with regions, road segments, or routes. Map features can include road features that describe characteristics of a map, such as POIs, placement of road signs, speed limits, road directionality (e.g., one-way, two-way), traffic history, traffic conditions, addresses on a road segment, lengths of road segments, and road segment type (e.g., surface street, residential, highway, toll). The map properties can also include features associated with intersections, such as road sign placement, the presence of traffic signals, turn restrictions, light timing information, throughput, and connecting road segments. In some embodiments, the map features also include properties describing the geographic region as a whole or portions of the geographic region, such as weather within the geographic region, geopolitical boundaries (e.g., city limits, county borders, state borders, country borders), and topological properties.

In some embodiments, map data store <NUM> stores information about virtual delineations of regions (e.g., geofences). A geofence is a virtual perimeter geographically enclosing a portion of map data. Geofences are used to delineate specific geographic regions and may be applied for various reasons, such as categorization or alerts. In one embodiment, a large region is subdivided into many smaller regions using geofences, and data about map features is collected with respect to effects or presence within individual geofences. Geofences may be established along political boundaries (e.g., city borders), census tracts, neighborhood outlines, using arbitrary grid cells (e.g., an overlay of hexagons on a map), or as a group of grid cells selected in view of one or more characteristics of the region corresponding to the cells. In one embodiment, the boundaries of a geofence are described using geographic coordinates (e.g., latitude and longitude). In some embodiments, road bins and cells of visibility maps may be represented by geofences.

Map data store <NUM> additionally stores information about POIs. Map data related to POIs may include names or common descriptions of the POIs, geographic locations of the POIs, popularity of POIs, etc. Furthermore, map data store <NUM> stores a visibility map corresponding to each POI. A visibility map includes information about locations in a region from which a particular POI is visible. For example, a visibility map may be a map of a region that has been divided into cells, each cell having associated scores related to the visibility of the POI from locations within the cell.

Visibility map generator <NUM> generates visibility maps for POIs and stores the visibility maps in map data store <NUM>. In some embodiments, visibility map generator <NUM> is provided with imagery and location data collected from roads within a region as input for creating a visibility map. For example, panoramic images and video may be captured at a variety of locations within a region. In some embodiments, panoramic videos may be captured using a panoramic camera attached to the top of a vehicle as it moves within the region. Visibility map generator <NUM> may analyze images and corresponding geographic locations and headings to determine visibility scores for cells of the visibility maps using one or more metrics for measuring the visibility of a POI. For example, visibility map generator <NUM> may analyze the images to determine a percentage of the pixels in an image that represent the POI, or a number of frames in a video in which the POI is visible. In some embodiments, system <NUM> may receive visibility maps or scores for regions within visibility maps from an outside source as an alternative to creating visibility maps locally with visibility map generator <NUM>.

A visibility map may be divided into cells. Visibility map generator <NUM> may assign each cell a visibility score associated with the visibility of the corresponding POI from within the cell. Cells can vary in size. For example, a cell can be an area that is several feet square, or may be larger, such as several square miles. A visibility score value may be determined according to a variety of inputs. In some embodiments, visibility map generator <NUM> may assign scores based on the frequency with which some or all of a POI appears in a frame of video. In some embodiments, a POI's visibility from a location may be assigned a value corresponding to a quantity or percentage of pixels of an input image that contribute to the image of the POI. In some embodiments, a cell of a visibility map may be assigned a binary value indicating whether or not the POI is visible from somewhere within the area, rather than receiving a score indicative of a degree to which the POI is visible. Visibility maps are described in more detail with respect to <FIG>.

Road bin store <NUM> stores data that associates road bins with POIs that are visible from locations within geographic areas corresponding to those road bins. In one embodiment, road bin store <NUM> includes information about the boundaries of individual road bins and their relationships to road segments and routes on a map of the region. In some cases, road bin store <NUM> may include multiple road bins with similar or overlapping boundaries, which include information about POIs that are visible in specific headings (e.g., a northbound road bin, an eastbound road bin, etc.). For example, a two-way road with an eastbound direction and a westbound direction may have separate road bins associated with the eastbound and westbound headings in which vehicles travel along the road. Such data may also be included in map data store <NUM>. Road bin store <NUM> may take the form of a lookup table in which a key is a road bin and an associated value is a set of POIs that are visible from within the road bin. In some embodiments, all POIs that are in some way visible from a location within the road bin may be included in the set of POIs associated with a road bin. In some embodiments, only POIs with at least a threshold visibility score are included in the set of associated POIs. In some embodiments, data in the road bin store may be updated periodically or whenever new data about POI visibility is received by system <NUM>.

POI display manager <NUM> determines information about POIs to transmit to user device <NUM>. System <NUM> receives requests for information about visible POIs from user devices <NUM>. In one embodiment, user device <NUM> may send information about a planned route (or user device <NUM> may send origin and destination locations so that system <NUM> can determine a route). Accordingly, POI display manager <NUM> determines a set of POIs associated with one or more of the road bins through which the route passes by searching for the road bins and their associated POIs in road bin store <NUM>. POI display manager <NUM> may select a subset of the POIs along the route to transmit to user device <NUM>. For example, POI display manager <NUM> might transmit information about five POIs along the route with the highest visibility scores.

In an embodiment, user device <NUM> sends its current location and heading to system <NUM> along with a request for information about visible POIs. POI display manager <NUM> determines a road bin that includes the current location and the current heading of user device <NUM> and queries road bin store <NUM> for the set of POIs that are visible from within the road bin. POI display manager <NUM> selects POIs from the set of visible POIs associated with the road bin and sends information about the selected POIs to user device <NUM>. By repeatedly querying system <NUM> for information about visible POIs, user device <NUM> can receive information about additional visible POIs as it moves through a region.

<FIG> is an example user interface displaying navigation instructions using landmarks, in accordance with some embodiments. The example of <FIG> shows a navigation routing application on a mobile device. Destination address <NUM> is displayed near the top of the screen. Destination marker <NUM> indicates a location of destination address <NUM> on map <NUM>. Current location marker <NUM> (e.g., a car symbol) shows the current location of the user device <NUM> in relation to map <NUM>. Route <NUM> between current location marker <NUM> and destination marker <NUM> is drawn on map <NUM>. In the example of <FIG>, POI marker <NUM> indicates a radio tower that is located along route <NUM>. As a user using user device <NUM> navigates from a current location to the destination, user device <NUM> may provide navigation instructions <NUM> related to POIs along route <NUM>. For example, navigation instructions <NUM> depicted in <FIG> suggest that the user "turn RIGHT at the radio tower. " In some embodiments, more POIs may be displayed on map <NUM> and not all displayed POIs are necessarily related to navigation instructions <NUM>. According to one embodiment, navigation instructions that include information about POIs may also be presented to a user in an audio format, for example, so that a user can hear navigation instructions about visible POIs while navigating a vehicle.

<FIG> illustrates an example POI visibility map, in accordance with an embodiment. Visibility map <NUM> is associated with POI <NUM> and represents how visible POI <NUM> is from different parts of a region. Visibility map <NUM> may be conceptualized as a heat map of locations and headings from which POI <NUM> is visible. Visibility maps <NUM> may cover various sizes and shapes of regions. For example, a visibility map <NUM> may represent how visible a POI <NUM> is from miles away (e.g., for a skyscraper), or a visibility map <NUM> may describe only the visibility of a POI <NUM> from geographic locations near the POI (e.g., for a statue).

According to one embodiment, visibility map <NUM> may include cells <NUM> of the represented region. In the example of <FIG>, the geographic region represented by visibility map <NUM> is divided into hexagonal cells <NUM>. As was described in the description of <FIG>, each cell is assigned a visibility score <NUM> by visibility map generator <NUM>. In some embodiments, each score on visibility map <NUM> may represent individual locations from which the POI is visible, rather than being an aggregate visibility score <NUM> that is representative of all locations within a cell <NUM>.

Using data from images (e.g., panoramas) collected from locations around a region, visibility scores <NUM> may be assigned to different cells <NUM> of heat map <NUM>. Image processing techniques may be used to determine when a particular POI is shown in an image and to determine additional information about images that include the POI. Visibility scores <NUM> for cells may be determined based on a variety of visibility metrics. A visibility score <NUM> may correspond to a number of frames of video taken within a cell <NUM> in which POI <NUM> is detected, a number of pixels of an image that are used to represent POI <NUM>, a perceived height or distance of POI <NUM>, a heading in which a camera was moving when it captured an image of POI <NUM>, or a measure of how frequently POI <NUM> disappears and reappears in the view of a camera for a sequence of images or video frames. It is appreciated that a person of skill in the art will recognize additional metrics for scoring the visibility of a POI using data from captured images.

<FIG> illustrates an example of using road bins to associate a location of a user device with visible POIs, in accordance with an embodiment. <FIG> shows map data including roads, POI <NUM>, and road bins <NUM> (outlined by thinly dashed lines). Data about road bins <NUM> is stored in road bin store <NUM>. In one embodiment, a road bin <NUM> may be conceptualized as a designated area or geofence that surrounds locations through which a route may pass. In the example of <FIG>, different road bins <NUM> are dedicated to different portions of roads and intersections. In some embodiments, road bins <NUM> may include areas that are not associated with roads. For example, a map of a geographic region could be divided into a grid and each grid cell may be considered a road bin <NUM> even though a road may not pass through every cell of the grid.

As described in reference to <FIG>, a road bin <NUM> may be represented in road bin store <NUM> as a data format that maps the geographic area enclosed by road bin <NUM> to a set of POIs <NUM> that are visible from within road bin <NUM>. In some embodiments, multiple road bins <NUM> may represent the same geographic area, each of the overlapping road bins <NUM> storing a set of POIs <NUM> that are visible to a user facing in a certain direction (e.g., the road bins <NUM> may be organized according to heading). Whether a POI <NUM> is visible from within a road bin <NUM> is determined using visibility scores <NUM> associated with cells <NUM> of visibility maps <NUM> that intersect with road bin <NUM>. That is, a road bin <NUM> may be associated with one or more POIs <NUM> that are associated with a location or cell <NUM> within or overlapping with the geographic area represented by the road bin <NUM>. In some embodiments, the road bin store <NUM> also includes data about the relative prominence of POIs <NUM> that are associated with a road bin <NUM>. For example, a road bin <NUM> may store visibility scores <NUM> that correspond to POIs <NUM> that are visible from locations within road bin <NUM>. In some embodiments, rather than storing visibility scores <NUM> of POIs <NUM> in road bins <NUM>, each road bin <NUM> may store data that ranks associated POIs <NUM> according to their relative prominences from within the road bin <NUM>.

Road bins <NUM> are used to identify POIs <NUM> that may be visible to a user of user device <NUM> when the user is physically located at a geographic location that is within the map area defined by road bin <NUM>. For example, in <FIG>, user location <NUM> is represented by a car symbol. User device <NUM> at the user location <NUM> may query system <NUM> for information about POIs <NUM> that are visible from user location <NUM>. Such a query may include data about user location <NUM> and the heading of the user. POI display manager <NUM> may search road bin store <NUM> for a road bin <NUM> that corresponds to user location <NUM> and, in some embodiments, the user heading. POI display manager <NUM> then selects a set of POIs <NUM> from among the POIs <NUM> that are associated with the road bin <NUM> to display or describe to the user via user device <NUM>. In some embodiments, user device <NUM> may query system <NUM> for information about POIs <NUM> that are visible along an entire route <NUM>, rather than POIs <NUM> associated with a specific user location <NUM>. In such cases, POI display manager <NUM> may search road bin store <NUM> for all road bins <NUM> through which the route <NUM> passes, and determine which POIs <NUM> to display or describe to the user from among the set of all POIs <NUM> that are associated with at least one road bin <NUM> along route <NUM>.

POI display manager <NUM> does not necessarily send information about every visible POI <NUM> associated with a road bin <NUM> to user device <NUM>. Developers may program POI display manager <NUM> with rules and conditions that determine which of the POIs <NUM> should be shown. Such rules and conditions may be simple limits placed on a number of POIs <NUM> to display, or they can be more complex algorithms that determine which POIs will be useful to a user. In some embodiments, POI display manager <NUM> may select a subset of the associated POIs <NUM> to send to user device <NUM>. As an illustrative example, POI display manager <NUM> may only transmit three POIs <NUM> associated with each road bin <NUM> to a user device <NUM>. In some embodiments, the POIs <NUM> may be ranked, for example according to how recognizable they are, or how often users of system <NUM> have requested them as destinations in the past. Information about a predetermined number of the most highly ranked POIs <NUM> may be sent to the user device <NUM>.

In another embodiment, POI display manager <NUM> may select POIs <NUM> based on the extent to which they are visible from locations within road bin <NUM>. The visibility scores in a visibility map that corresponds to a POI <NUM> may be used by POI display manager <NUM> to determine whether to transmit information about the POI to a user device <NUM>. For example, POI display manager <NUM> may determine one or more cells <NUM> of a visibility map <NUM> that overlap with the boundaries of a road bin <NUM>. Based on a visibility score associated with each such cell of the visibility map, POI display manager <NUM> may determine whether to transmit information about the POI <NUM> to user device <NUM> (e.g., if the visibility score is above a threshold level). As another example, map data store <NUM> may include a dispersal score for each POI <NUM>, the dispersal score calculated using an average distance at which the POI <NUM> is visible (e.g., taller POIs may have larger dispersal scores). POI display manager <NUM> may select POIs to display in view of a comparison of these dispersal scores.

In some embodiments, POIs <NUM> may be associated with different categorizations by system <NUM>. For example, POIs <NUM> may be classified as monuments, natural features, buildings, stores, restaurants, etc. POI display manager <NUM> may select POIs <NUM> from a specific category to display at user device <NUM>. Such a category selection may be made according to a context of a trip. For example, if a user device <NUM> requests information about POIs <NUM> along a route <NUM> with a destination located at a museum, POI display manager <NUM> may select other POIs <NUM> categorized as museums that may be visible along the route <NUM> for displaying to the user.

As still another embodiment, certain POIs <NUM> may always be included for display to the user by POI display manager <NUM>. For example, well-known POIs <NUM> (e.g., the Eiffel tower) may be preprogrammed to always be included for transmission to user device <NUM> when they are in the set of POIs <NUM> associated with a road bin <NUM>. Similarly, POI display manager <NUM> may always include a POI <NUM> that is associated with a route destination, in some embodiments.

In addition to determining which POIs <NUM> to send to user device <NUM>, POI display manager <NUM> may determine when and how the POIs <NUM> should be displayed to a user. POIs <NUM> may be displayed by user device <NUM> as soon as information about them is received from system <NUM> or as user device <NUM> comes within a certain distance of each POI <NUM>. POIs <NUM> may be displayed with varying degrees of emphasis depending on distance, popularity, associated visibility scores, etc. Furthermore, POI display manager <NUM> may determine whether POIs <NUM> should disappear from a display of user device <NUM> when the device is no longer in a location from which the POI <NUM> is visible to a user of the user device <NUM>.

<FIG> is a flowchart illustrating a process for providing a user device with information about visible POIs, in accordance with an embodiment. System <NUM> receives <NUM> location information from a user device. Using the location information, system <NUM> determines <NUM> a road bin associated with the location information. For example, the location may be included in the region of the road bin or the location information may describe a route that travels through the road bin.

The system identifies <NUM> a set of POIs that are visible from the determined road bin. In some embodiments, the set of POIs that are visible from a road bin are determined according to information stored in visibility maps related to POIs. After determining which POIs are visible from the location and determining which of the visible POIs to describe to the user, system <NUM> transmits <NUM> information about the set of POIs to the user device <NUM>, where it may be presented to a user in a visible or audible format.

<FIG> is a flowchart illustrating a process for providing user device <NUM> with routing instructions related to visible POIs along a route, in accordance with an embodiment. System <NUM> receives <NUM> route information for directing a user from an origin location to a destination location. In some embodiments, system <NUM> may generate the route and routing information. System <NUM> determines <NUM> a set of road bins through which the route passes and identifies <NUM> a set of POIs that will be visible to the user as the route is traversed using the data stored in the road bins.

As the user follows the route, system <NUM> receives <NUM> location data from the user device <NUM>. In view of the location data and the user's position along the route, system <NUM> transmits <NUM> routing instructions related to the visible POIs to user device <NUM>. For example, system <NUM> may receive user location data indicating that the user needs to turn at the next road, and may subsequently transmit instructions to user device <NUM> for the user to turn past a particular POI on the corner.

<FIG> is a block diagram illustrating components of an example machine able to read instructions from a machine-readable medium and execute them in one or more processors (or controllers). Specifically, <FIG> shows a diagrammatic representation of system <NUM> in the example form of a computer system <NUM>. The computer system <NUM> can be used to execute instructions <NUM> (e.g., program code or software) for causing the machine to perform any one or more of the methodologies (or processes) described herein. In alternative embodiments, the machine operates as a standalone device or a connected (e.g., networked) device that connects 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 machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a set-top box (STB), a smartphone, an internet of things (IoT) appliance, a network router, switch or bridge, or any machine capable of executing instructions <NUM> (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute instructions <NUM> to perform any one or more of the methodologies discussed herein.

The example computer system <NUM> includes one or more processing units (generally processor <NUM>). The processor <NUM> is, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a controller, a state machine, one or more application specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination of these. The computer system <NUM> also includes a main memory <NUM>. The computer system may include a storage unit <NUM>. The processor <NUM>, memory <NUM>, and the storage unit <NUM> communicate via a bus <NUM>.

In addition, the computer system <NUM> can include a static memory <NUM>, a graphics display <NUM> (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector). The computer system <NUM> may also include alphanumeric input device <NUM> (e.g., a keyboard), a cursor control device <NUM> (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), a signal generation device <NUM> (e.g., a speaker), and a network interface device <NUM>, which also are configured to communicate via the bus <NUM>.

The storage unit <NUM> includes a machine-readable medium <NUM> on which is stored instructions <NUM> (e.g., software) embodying any one or more of the methodologies or functions described herein. For example, the instructions <NUM> may include instructions for implementing the functionalities of the visibility map generator <NUM> or the POI display manager <NUM>. The instructions <NUM> may also reside, completely or at least partially, within the main memory <NUM> or within the processor <NUM> (e.g., within a processor's cache memory) during execution thereof by the computer system <NUM>, the main memory <NUM> and the processor <NUM> also constituting machine-readable media. The instructions <NUM> may be transmitted or received over a network <NUM>, such as the network <NUM>, via the network interface device <NUM>.

While machine-readable medium <NUM> is shown in an example embodiment to be a single medium, the term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions <NUM>. The term "machine-readable medium" shall also be taken to include any medium that is capable of storing instructions <NUM> for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein. The term "machine-readable medium" includes, but not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media.

The foregoing description of the embodiments has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the patent rights to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure.

Some portions of this description describe the embodiments in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.

In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by one or more computer processors for performing any or all of the steps, operations, or processes described.

Embodiments may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory, tangible computer readable storage medium, or any type of media suitable for storing electronic instructions, which may be coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.

Embodiments may also relate to a product that is produced by a computing process described herein. Such a product may comprise information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein.

Claim 1:
A computer implemented method for providing vehicle route guidance, the method comprising:
receiving (<NUM>) routing data for directing a user from an origin location to a destination location, the routing data including a route;
determining (<NUM>) a set of road bins through which the route passes, wherein each road bin represents: a geofence comprising at least a portion of a road segment, a heading associated with the road bin, and points of interest, POls, visible from within the geofence when the user travels at the heading;
identifying (<NUM>), based on the determined set of road bins, a set of POIs that are visible along the route; and
as the user moves along the route:
receiving (<NUM>) location data from a user device (<NUM>), the location data indicating the user's current location and heading;
determining the road bin associated with the user's current location and heading, and determining the visible POIs associated with the road bin; and
transmitting (<NUM>) routing instructions related to the visible POIs to the user device, the routing instructions including information about the route in relation to the POIs that are visible at the user's current location and heading.