The present disclosure relates to map data optimization and more specifically to a system and a method to pre-fetch map data from a remote map database.
With the widespread use of mobile devices, such as mobile phones, personal data assistants, tablet personal computers, etc., consumer demand for ready access to varied types of data continues to grow at a high rate. These devices are used to transmit, receive, and store text, voice, image, and video data. Consumers often look to store large numbers of applications on these devices, such that mobile devices are often touted more for the number of available applications, than internal processor speed. While consumers have come to desire fast access to data, the sheer amount of data required to run these applications places a premium on data management, both at the device level and at the network level. This premium limits the effectiveness of applications such as mapping applications, which typically require comparatively large amounts of network data.
Mapping applications are found in a variety of mobile devices, including car navigation systems, hand-held GPS units, mobile phones, and portable computers. These applications are among the most frequently used applications and are considered, by some, necessary for modern living. Although the underlying digital maps are easy to use from a user's perspective, creating a digital map is a data intensive process. Every digital map begins with a set of raw data corresponding to millions of streets and intersections. That raw map data is derived from a variety of sources, each providing different amounts and types of information. To effectively map a location, locate a driving route between a source and a destination, identify points of interest, etc. requires substantial amounts of data. Furthermore, many mapping applications require display of different map data at different zoom levels, i.e., different scales, where the amount of detail and that nature of that detail changes at each zoom level. For example, at a lowest zoom level, scaled farthest away from a target, the map data may contain the boundaries of continents, oceans, and major landmasses. At subsequent zoom levels that map data may identify countries, states, homelands, protectorates, other major geographic regions. While at even further subsequent zoom levels, that map data may contain major roads, cities, towns, until eventually the map data contains minor roads, buildings, down to even sidewalks and walk ways depending on the region. The amount of detail is determined by the sources of information used to construct the map data at each zoom level. But no matter the zoom level, the amount of information is voluminous and generally too large for storage, in total, on mobile devices and too large for continuous download over a wireless communication network.
In operation, mapping applications typically download map data to the mobile device through a wireless communication network and in response to a user entering a location of interest and/or based on the current location of the mobile device, such as the current global positioning satellite (GPS) data or current cellular network location data for the device. A conventional technique for downloading map data is to have the mobile device communicate this location data to a remote processor on the wireless communication network, which, in response, downloads all map data to the mobile device or the map data requested for display to the user.
Generally speaking, the map data is stored in blocks known as map data tiles, where the number of map data tiles increases with zoom level. The remote processor provides a subset of the available map data tiles for a particular location or region to the mobile device for storage and display at any particular time via a map display application. By providing large numbers of map data tiles, the mobile device may buffer the map data for display to the consumer as the consumer scrolls across an area using the mapping application looking for adjacent or other mapping locations. However, the larger the number of map tiles provided at any particular time increases the download time and buffer memory usage while the user is using the map display application.
Conventionally, map data tiles are downloaded and cached, but in a crude manner that is unable to take advantage of memory surpluses on devices and unable to take advantage of network bandwidth surpluses, e.g., when the user is not using the device. The conventional techniques are similarly deficient in the face of lacking memory and reduced bandwidth. As a result, there is a need to have more intelligent mechanisms for downloading map data, in particular map data tiles, to sufficiently satisfy the needs of the user, while doing so in a manner that addresses network bandwidth and memory conditions.
In an embodiment, a computer-implemented method comprises: identifying, on the client device, a map point of interest; identifying, from a plurality of zoom levels, one or more zoom levels for use in identifying map data for storage on the client device, where the map data is to be stored on the client device at different zoom levels, each zoom level containing a respective set of map data tiles; identifying a different tile radius for each of the one or more determined zoom levels, where each tile radius corresponds to the map point of interest and defines, for each of the one or more zoom levels, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of the visual display in response to a subsequent user request; requesting, from the remote map database, the pre-fetch map data tiles, wherein the map database stores map data in the form of a plurality of map data tiles, and the pre-fetch map data tiles are a sub-set of the plurality of map data tiles; and receiving and storing the pre-fetch map data tiles in a local memory on the client device.
In another embodiment, a computer-readable medium storing instructions, the instructions when executed by a processor cause the processor to: identify, on the client device, a map point of interest; identify, from a plurality of zoom levels, one or more zoom levels for use in identifying map data for storage on the client device, where the map data is to be stored on the client device at different zoom levels, each zoom level containing a respective set of map data tiles; identify a different tile radius for each of the one or more determined zoom levels, where each tile radius corresponds to the map point of interest and defines, for each of the one or more zoom levels, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of the visual display in response to a subsequent user request; request, from the remote map database, the pre-fetch map data tiles, wherein the map database stores map data in the form of a plurality of map data tiles, and the pre-fetch map data tiles are a sub-set of the plurality of map data tiles; and receive and store the pre-fetch map data tiles in a local memory on the client device.
In another embodiment, a computer system for fetching map tile data to be used in constructing a visual display of map data on a client device, the computer system comprising: a map point identifier module that identifies a map point of interest; a zoom level module that identifies one or more zoom levels for use in identifying map data for storage on the client device, where the map data is to be stored on the client device at different zoom levels, each zoom level containing a respective set of map data tiles; a map tile radius module that determines a different tile radius for each of the one or more determined zoom levels, where each tile radius corresponds to the map point of interest and defines, for each of the one or more zoom levels, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of the visual display in response to a subsequent user request; and a database interface module to receive, from the map database, the pre-fetch map data tiles corresponding to the map point of interest and to store the pre-fetch map data tiles in a local memory on the client device.
In yet another embodiment, a computer-implemented method for identifying pre-fetch map tile data to be used in constructing a visual display of map data on a client device, the method comprising: receiving, at a server, data identifying one or more map points of interest of map data stored in a map database on the server, where the map data is stored in the map database in a plurality of different zoom levels each comprising a plurality of map data tiles, where at least two of the zoom levels contain different numbers of map data tiles; receiving, at the server, map tile radius data for each of the one or more map points of interest; receiving, at the server, zoom level data identifying one or more zoom levels for each of the one or more map points of interest; collecting, from the map database, pre-fetch map data tiles for each of the one or more map points of interest, based on the received, one or more map points of interest, the map tile radius data, and the zoom level data; and transmitting the pre-fetch map data tiles to the client device for storage on the device.
In some embodiments, the map database contains map data at multiple zoom levels and the tile radius provides a mechanism for identifying pre-fetch map data tiles at each zoom level. In some embodiments, the tile radius changes with zoom level, by increasing with zoom level. In some embodiments, the tile radius at some zoom levels is the same, while in other embodiments, the tile radius is different at each zoom level. In some embodiments, the tile radius for each zoom level is stored in a lookup table accessible during operation.
In some embodiments, the tile radius is fixed; while in other embodiments, the tile radius may be adjusted based on usage patterns of the user of a client device.
In some embodiments, there are a plurality of map points of interest, and the method or system determines tile radii for each, to allow for pre-fetching of map data tiles for each point of interest.
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 present application describes techniques for fetching map data over a selected subset of the entire map data available, for a particular zoom level, by using a map radius to define map data of interest. That map radius varies with the zoom level to encompass map data covering different geographic regions of interest. In some example implementations, while the map radius at each zoom level varies, increasing with each zoom level, the amount of map data fetched is maintained constant across zoom levels.
More particularly, a map pre-fetch system and method identifies map data corresponding to one or more particular locations of interest, based on a radius of map data surrounding those locations. In an embodiment, a client device employing the pre-fetch system identifies locations of interest to a server, along with data indicating one or more zoom levels at which map data is to be displayed to a user. The server responds by downloading to the client device map data within the determined radius of interest surrounding the identified points. In this way, the client device is able to pre-load, a sufficient amount of map data to allow a user to scroll through the visual display of map data around the locations of interest, without the device having to further poll the server for that information during user interaction. In some embodiments, the radius of interest is made to vary across zoom levels, and generally is determined to allow the user, at each zoom level, an amount of flexibility so that the user can interact with a visual map display, scrolling through the display, without the client device having to frequently access the server for additional map data, as in conventional systems. The map data is stored in a map database at the server in data blocks, termed “tiles.” The radius is used to identify a number of tiles of a map data that will be pre-fetched by the server and sent to the client device for buffering and display to the user.
Pre-fetching refers to requesting map data from a remote map database, such as that of a remote server, prior to any specific user request for map data, so that map data may be collected and buffered on a device until a specific user request for map data. In this way, pre-fetching seeks to collect map data in the background, before that map data is called upon to construct a visual display, thereby reducing (and even eliminating) the need for a client device to request map data only after a user request. The pre-fetched map data is automatically identified, requested, and stored on the client device for subsequent use in constructing a visual display. As discussed in examples below, where that map data is stored in the remote map database in the form of map data tiles, the pre-fetching is of map data tiles.
Both the server 105 and the clients 115 are computers that may include a CPU 130 (only shown in the clients), one or more computer readable memories 132, one or more user interfaces 134 (keyboard, touch screen, etc.), a network interface 136, one or more peripheral interfaces, and other well known components. As is known to one skilled in the art, other types of computers can be used that have different architectures. The client devices 115 represent any suitable handheld and/or mobile device, such as a mobile phone, personal data assistant, laptop computer, tablet personal computer, car navigation system, hand-held GPS unit, or “smart” device. More broadly, the client devices 115 represent any personal computing device, database, server, or network of such devices, or any other processing device having a user interface and CPU and capable of displaying a visual rendition of map data accessed from the map database 103 or other remote source of map data. Furthermore, while in some examples, the network 125 is described as a wireless network, the network 125 may be any wired or wireless network, where the clients 115 are devices on the network.
The server 105 and the clients 115 are also adapted to execute computer program modules for providing functionality described herein. As used herein, the terms “module” and “routine” refer to computer program logic used to provide the specified functionality. Thus, a module or a routine can be implemented in hardware, firmware, and/or software. In one embodiment, program modules and routines are stored on a storage device, loaded into memory, and executed by a processor or can be provided from computer program products that are stored in tangible computer-readable storage mediums (e.g. RAM, hard disk, optical/magnetic media, etc.).
The map database 103, which may be stored in or may be separate from the server 105, contains map data that can be used to generate a digital map or that can be used by, for example, a navigation system to determine routes between two locations. Physical roads, waterways, parks, landmarks, and other geographic elements may be represented in the map data by a list of nodes and segments that connect those nodes. Each node corresponds to a specific geographic location in the physical world. The data representation for each node generally includes a set of coordinates (e.g., latitude and longitude) and an association with one or more segments. For roads, each segment corresponds to a section of a physical location that begins at one node and ends at a different node. The data representation for each road segment, for example, can include a length and a number of attributes, such as a street name, a priority (e.g. a highway or a local road), speed information, a surface type, a road width, an indication of whether the road segment is a one-way segment, address ranges, usage (e.g. ramp or trail), etc.
The map data stored in the map database 103 can be obtained from several different sources such as the New York City Open Accessible Space Information System (OASIS) and the U.S. Census Bureau Topologically Integrated Geographic Encoding and Referencing system (TIGER). The map data can also be accessed by one of the map generators 120, modified, and stored back into the database 103. Further, the database 103 does not need to be physically located within server 105. For example, the database 103 can be partially stored within a client 115, can be stored in external storage attached to the server 105, or can be stored in a network attached storage. Additionally, there may be multiple servers 105 that connect to a single database 103. Likewise, the map database 103 may be stored in multiple different or separate physical data storage devices.
Each client 115 executes one of the map generators 120, each of which receives pre-fetch map data from the server 105 and generates a visual display of the received map data that is presented to the user on a display of the interface 134. The map generator 120 is able to adjust that visual display in response to user interactions with the interface 134, for example, adjusting which map data is visualized at any given time in response to a user selecting to scroll (left, right, up, down, etc.) through the visual display, or in response to the user selecting to change the zoom level (e.g., scale) of the displayed map data.
As illustrated in the detailed example of
In the illustrated embodiment, the map generator 120 further includes a map radius module 188 that identifies a radial distance from the one or points of interest to define the bounds of the pre-fetch map data transmitted by the server 105. The client 115, for example, is able to communicate map radius data to the server 105 through the database interface module 181, while the server 105 uses that data to define the bounds of the pre-fetch map data selected from the overall map database 103, which the server 105 then communicates as pre-fetch map data to the client 115 for storage in the buffer 180.
While the map radius module 188 is described as contained within the map generator 120, in other examples, a radius module may be stored in the server 105 or in both the client 115 and the server 105. In embodiments where the map radius module 188 accesses zoom data from a zoom level module 190, the map radius module 188 may access a radius/zoom level look up table that associates a radius for each zoom level. Such a radius module may be implemented in the map generator 120 of the client 115 or implemented as a standalone or integrated module at the server 105.
Of course, some embodiments of the map generator 120 may have different and/or other modules than the ones described herein. Similarly, the functions described herein can be distributed among the modules in accordance with other embodiments in a different manner than that described herein.
Generally speaking, map data in the map database 103 is stored in different zoom levels each formed of a plurality of map data blocks, termed map tiles, which are used to construct a visual display of the map.
The number of tiles at each zoom level increases, e.g., linearly, quadratically, exponentially, or otherwise. The zoom levels in the illustrated example (z=1, 2, and 5) have 6, 18, and 60 map data tiles, respectively, covering the same geographic area or region.
In some embodiments, each map tile contains map data stored in a bitmap format, for display to the user using a raster display engine executed by the display module 184. In other embodiments, the map tile may contain map data stored in vector format, for display using a vector buildup display engine executed by the display module 184. In either case, the display module 184 may employ a C++, HTML, XML, JAVA, or Visual Basic application for generating a visual display of the map tiles.
In the illustrated embodiment, all map data is stored in map tiles, and each map tile in a zoom level data structure is allocated the same memory allocation size. For example, each tile 204A-204R may be a bitmap image at or near 10 Kbytes in size. This may be achieved, for example, by having each map tile cover the same sized geographic area. For map tiles containing vector data, the data size for each tile may vary, but each tile may still, in some embodiments, be allotted the same maximum memory space. Although not illustrated, in other embodiments, the data tiles will have different memory space allocations within a zoom level data structure.
In operation, the server 105 is able to transmit map data to respective clients 115 in chunks of data defined by these map tiles. For example, to transmit the map data needed to construct the map display 300, the server 105 may transmit each map tile in a frame, having a header portion providing identification data of the frame (such as geographic position, client device address, map tile version number, etc.) and a payload portion containing the specific map tile data to be used in forming the visual display. Map data tiles provide an effective mechanism for quantizing map data stored in the map database 103 and for quantizing communication of the map data over the network 125 to the clients 115.
In comparison to
Each of the displays 300, 400, and 500 is of a portion of the overall map data, which comprises many more map data tiles.
As illustrated across
As the zoom levels increase, i.e., as the visual map display focuses down on a smaller geographic region, the amount of map data may reach a maximum point, beyond which all zoom levels will contain the same map data. The number of map tiles needed to construct a map display may vary but the total amount of map data becomes saturated. The zoom level corresponding to this point is termed the saturation zoom level and represents the zoom level at which all roads, building, parks, end points, and other map data elements for a geographic region are provided. Any additional zoom levels selected by the user merely zoom in further on these map data elements. In the illustrated example of
While a user interacts with the visual map displays 300, 400, and 500, the user may wish to scroll around to display other map data near the illustrated map data. Therefore, the client device 115 uses a system to fetch and store a sufficient amount of map data to form the visual map display while buffering additional map data at the local device 115 to allow efficient user interaction with that display.
At a block 702, the map point identification module 182 automatically (i.e., without user interaction or initiation) determines one or more points of interest to display to a user via the interface 134. The module 182 automatically identifies points of interest, for example, by determining a GPS position of the current location of the client 115, by determining most recently searched points of interest, by accessing a database of stored points of interest, or by determining the most recently visited points of interest (e.g., cities, neighborhoods, etc.). Of course, in some of these cases, the module 182 may determine locations for which to download map data for storage at the user device as a background application and thus without any particular user interaction. An example further implementation of the module 182 and the block 702 is described in
In other examples, the module 182 may manually determine the points of interest based on user input, for example, through the user providing an address into a data field presented on the interface 134, or through the user selecting to find a point of interest obtained through interaction with the interface 134 more generally. For example, the user can access a web-browser or other program running on the client device that identifies a location, business, home, etc., from which the module 182 may allow the user to select such item for building a map display of the vicinity around such point of interest. Any suitable manual method for entering or otherwise identifying one or more points of interest may be used by module 182 and collected by the block 702. These manual methods may have been previously made resulting in stored data that is automatically accessed by the module 182, via the block 702. In other examples, these manual methods may occur contemporaneously with execution of the routine or process 700. Further still, these manual methods can be modified into automatic methods of map point identification, by having the block 702 access historical data on previous, manual user data inputs.
Returning to
The tile radius 854, in
To identify the tile radius, at a block 704, the tile radius module 188 accesses a lookup table of tile radius values for each of the zoom levels (z=1 . . . z=n), where an example lookup table 900 is illustrated in
Furthermore, the tile radius values 906 may be fixed and held constant. In other examples, the tile radius module 188 changes the tile radii, for example, in response to user preferences or usage patterns stored, or in response to a tile radius data update request from the server 105. For example, the tile radius module 188 may access a usage profile database stored in a portion of the memory 132 and that contains data on recent interactions with a visual map display on the user interface, e.g., the amount of scrolling a user has done, the amount of scale changing the user does, etc., from which the module 188 determines if radii values for one or more of the zoom levels should be changed. In this way, the tile radius values can be changed dynamically, based on usage patterns of the user.
In the illustrated example of
The routine or process 700 may identify a plurality of radii, one for each of an identified number of desired zoom levels, which is desirable when the client 115 will act to request pre-fetch map data over a plurality of zoom levels from the server 105. In other examples, the block 704 will identify a single radius corresponding to a single zoom level. In either case, at a block 706, the one or more desired zoom levels are identified (by map zoom module 190).
At a block 707, the database interface module 181 communicates the points of interest (block 702), the tile radius data (block 704), and the zoom level data (block 706) to the server 105, in particular, in the illustrated embodiment, to a pre-fetch module 750 at the server 105. For example, the block 707 may request pre-fetch map data for all map points of interest at one time, for example, by sending to the server a data frame having an identification header that contains, among other things, an identification field identifying the client device and having a payload that identifies the one or more map points of interest and the zoom level or zoom levels for which to collect map data. The map points of interest may be identified by a longitude and latitude coordinate, in some embodiments. The pre-fetch module 750 is able to identify the one or more points of interest and the tile data within the tile radius of those points of interest, at each requested zoom level, to define the overall map data to be fetched from the map database 103. That is, for a request for zoom level, z=10, the pre-fetch module 750 would identify the shaded map data tiles of
The module 750 collects the pre-fetch map tiles and transmits them to the map generator 120, which stores that pre-fetch map data, through a block 708 (database interface module 181), in the memory buffer 190.
The routine or process 700 maintains the entire pre-fetch map data from the server 105 in the memory buffer 180. Optionally, at a block 709, the client device 115 awaits some user interaction, i.e., a subsequent interaction after the pre-fetching of blocks 701-708. Once as user as performed an interaction that is to result in rendering (i.e., construction and display) of a visual map display, a block 710 identifies an initial subset of the previously-stored pre-fetch map data to display to the user on a visual display, in response to the user interaction.
At a block 714, the routine or process 700 detects further user interactions with the interface 134, waiting for the user to interact with the visual display of map data as the user selects different regions of the map data that should be displayed. For example, the block 714 detects a user scrolling across the displayed map data as the user attempts to display adjacent map data to the initial point of interest. Such scrolling may be sideways across the display, up or down, or any other desired direction. The user may also choose to alter the map by changing zoom levels, either increasing to zoom in further on the map data or decreasing to zoom further out. The block 714 identifies map manipulation user interaction data to the block 710, which then determines which new pre-fetched map data is to be displayed in response to the user interaction. Or the block 714, upon appropriate instruction from the user, terminates the routine or process 700 entirely, for example, when a user selects to exit a mapping application.
The blocks 709-714 are optional. And furthermore, instead of awaiting user interaction, these blocks may be designed to automatically performing the pre-fetch map data identification and visual map display rendering.
At a block 1108, the module 182 aggregates the polled potential points of interest data and provides this data to a block 1110, where the module 182 determines a set of one or more points of interest to be used by block 704 to determine the corresponding one or more tile radii.
The block 1110 may determine the points of interest by using a threshold, for example, identifying any points of interest that have been accessed by the user a certain number of times or a certain percentage of time over a given period of time. The block 1110 may determine the points of interest comparatively, for example, by determining which points of interest are the most frequently accessed. The block 1110 may make the determination based on which points of interest are most recently accessed.
At a block 1212, the server 105 transmits the pre-fetch map data collected at block 1210 to the requesting client device 115, where the requesting client device 115 is identified by address information in a header of the data provided to block 1202. In other embodiments, the block 1212 does not immediately transmit the pre-fetch map data but rather buffers that map data in a memory at the server 105 for subsequent transmission, along with any additional pre-fetch map data.
In the illustrated embodiment, at a block 1214, the server 105 determines if the client device has identified a need for map data stored at additional zoom levels, where if so, control is passed back to the block 1208 which identifies the next zoom level and the process repeats, as described. If no additional zoom level data is required for the particular point of interest, then a block 1216 determines if additional points of interest have been identified by the client device, where if so, control is passed back to the block 1206 which identifies the next point of interest and the process repeats, as described.
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
For example, the network 125 may include but is not limited to any combination of a LAN, a MAN, a WAN, a mobile, a wired or wireless network, a private network, or a virtual private network. Moreover, while only three clients 115 are illustrated in
Additionally, certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmissions (e.g., over appropriate circuits and buses) that connect the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
Similarly, the methods or routines described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or processors or processor-implemented hardware modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors may be distributed across a number of locations.
The one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interfaces (APIs).)
The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of this specification are presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). These algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or a combination thereof), registers, or other machine components that receive, store, transmit, or display information.
As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. For example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. The embodiments are not limited in this context.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the description. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Still further, the figures depict preferred embodiments of a map editor system for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein
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 for identifying terminal road segments through the disclosed principles herein. 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.
Number | Name | Date | Kind |
---|---|---|---|
4984279 | Kidney et al. | Jan 1991 | A |
5345086 | Bertram | Sep 1994 | A |
5793310 | Watanabe et al. | Aug 1998 | A |
5848373 | DeLorme et al. | Dec 1998 | A |
6094685 | Greenberg et al. | Jul 2000 | A |
6199150 | Yoshikawa | Mar 2001 | B1 |
6330453 | Suzuki et al. | Dec 2001 | B1 |
6400690 | Liu et al. | Jun 2002 | B1 |
6442757 | Hancock et al. | Aug 2002 | B1 |
6453233 | Kato | Sep 2002 | B1 |
6571279 | Herz et al. | May 2003 | B1 |
6853911 | Sakarya | Feb 2005 | B1 |
7006820 | Parker et al. | Feb 2006 | B1 |
7136748 | Umezu et al. | Nov 2006 | B2 |
7263368 | Knauerhase et al. | Aug 2007 | B2 |
7315259 | Sacks | Jan 2008 | B2 |
7327349 | Robbins et al. | Feb 2008 | B2 |
7464109 | Modi | Dec 2008 | B2 |
7502780 | Thorpe | Mar 2009 | B2 |
7502876 | Nemirovsky et al. | Mar 2009 | B1 |
7551182 | Bethune et al. | Jun 2009 | B2 |
7571422 | Adel et al. | Aug 2009 | B2 |
7577520 | Nomura | Aug 2009 | B2 |
7584434 | Okamura | Sep 2009 | B2 |
7610147 | Umezu et al. | Oct 2009 | B2 |
7663671 | Gallagher et al. | Feb 2010 | B2 |
7710421 | Muramatsu | May 2010 | B2 |
7711473 | Sekine et al. | May 2010 | B2 |
7734412 | Shi et al. | Jun 2010 | B2 |
7739037 | Sumizawa et al. | Jun 2010 | B2 |
7796837 | Lueck | Sep 2010 | B2 |
7831383 | Oohashi | Nov 2010 | B2 |
7831387 | Golding et al. | Nov 2010 | B2 |
7839421 | Bethune et al. | Nov 2010 | B2 |
7873465 | Geelen et al. | Jan 2011 | B2 |
7920968 | Chapin et al. | Apr 2011 | B2 |
7925624 | Vosshall et al. | Apr 2011 | B2 |
7925982 | Parker et al. | Apr 2011 | B2 |
7962565 | Coker | Jun 2011 | B2 |
7974959 | Sawai et al. | Jul 2011 | B2 |
7975025 | Szabo et al. | Jul 2011 | B1 |
7983659 | Shinya | Jul 2011 | B2 |
7996445 | Fair et al. | Aug 2011 | B2 |
8005612 | Asahara et al. | Aug 2011 | B2 |
8010407 | Santoro et al. | Aug 2011 | B1 |
8014796 | Boudreau et al. | Sep 2011 | B2 |
8032297 | Jakobson | Oct 2011 | B2 |
8060389 | Johnson | Nov 2011 | B2 |
8060582 | Bliss et al. | Nov 2011 | B2 |
8078641 | Mao et al. | Dec 2011 | B2 |
8095307 | Ebert et al. | Jan 2012 | B2 |
8204966 | Mendis et al. | Jun 2012 | B1 |
8280414 | Nourse et al. | Oct 2012 | B1 |
20020133491 | Sim et al. | Sep 2002 | A1 |
20030187984 | Banavar et al. | Oct 2003 | A1 |
20040203998 | Knauerhase et al. | Oct 2004 | A1 |
20040220730 | Chen et al. | Nov 2004 | A1 |
20060026170 | Kreitler et al. | Feb 2006 | A1 |
20060067224 | Ohara | Mar 2006 | A1 |
20060069749 | Herz et al. | Mar 2006 | A1 |
20060080032 | Cooper et al. | Apr 2006 | A1 |
20060195256 | Nakamura et al. | Aug 2006 | A1 |
20060277271 | Morse et al. | Dec 2006 | A1 |
20070050128 | Lee et al. | Mar 2007 | A1 |
20070080830 | Sacks | Apr 2007 | A1 |
20070143014 | Sekine et al. | Jun 2007 | A1 |
20070242077 | Danan | Oct 2007 | A1 |
20070273558 | Smith et al. | Nov 2007 | A1 |
20070282915 | Vosshall et al. | Dec 2007 | A1 |
20080071988 | Schloter et al. | Mar 2008 | A1 |
20080082225 | Barrett | Apr 2008 | A1 |
20080102857 | Kim | May 2008 | A1 |
20080132249 | Hamilton | Jun 2008 | A1 |
20080177469 | Geelen et al. | Jul 2008 | A1 |
20080192053 | Howell et al. | Aug 2008 | A1 |
20080238723 | Fein et al. | Oct 2008 | A1 |
20080270579 | Herz et al. | Oct 2008 | A1 |
20080291205 | Rasmussen et al. | Nov 2008 | A1 |
20090063042 | Santesson et al. | Mar 2009 | A1 |
20090125228 | Dicke et al. | May 2009 | A1 |
20090128483 | Robbins et al. | May 2009 | A1 |
20090132163 | Ashley, Jr. et al. | May 2009 | A1 |
20090153563 | Tudose | Jun 2009 | A1 |
20090182500 | Dicke | Jul 2009 | A1 |
20090198767 | Jakobson et al. | Aug 2009 | A1 |
20090210388 | Elson et al. | Aug 2009 | A1 |
20090244095 | Bowman et al. | Oct 2009 | A1 |
20090281718 | Gibran et al. | Nov 2009 | A1 |
20090287750 | Banavar et al. | Nov 2009 | A1 |
20090319177 | Khosravy et al. | Dec 2009 | A1 |
20090319188 | Otto | Dec 2009 | A1 |
20090326810 | Callaghan et al. | Dec 2009 | A1 |
20100020091 | Rasmussen et al. | Jan 2010 | A1 |
20100106397 | Van Essen | Apr 2010 | A1 |
20100106801 | Bliss et al. | Apr 2010 | A1 |
20100117810 | Hagiwara et al. | May 2010 | A1 |
20100131186 | Geelen et al. | May 2010 | A1 |
20100153007 | Crowley | Jun 2010 | A1 |
20100179940 | Gilder et al. | Jul 2010 | A1 |
20100250646 | Dunagan et al. | Sep 2010 | A1 |
20100274899 | Shrivastava et al. | Oct 2010 | A1 |
20100321399 | Ellren et al. | Dec 2010 | A1 |
20100333085 | Criddle et al. | Dec 2010 | A1 |
20110054776 | Petrov et al. | Mar 2011 | A1 |
20110093515 | Albanese | Apr 2011 | A1 |
20110095993 | Zuverink | Apr 2011 | A1 |
20110098917 | LeBeau et al. | Apr 2011 | A1 |
20110098918 | Siliski et al. | Apr 2011 | A1 |
20110161875 | Kankainen | Jun 2011 | A1 |
20110213798 | Osuka et al. | Sep 2011 | A1 |
20110276263 | Shimotani et al. | Nov 2011 | A1 |
20110300848 | Boudreau et al. | Dec 2011 | A1 |
20110316854 | Vandrovec | Dec 2011 | A1 |
20120022786 | Siliski et al. | Jan 2012 | A1 |
20120022787 | LeBeau et al. | Jan 2012 | A1 |
20120083995 | Vorona | Apr 2012 | A1 |
Number | Date | Country |
---|---|---|
10-2008-071228 | Aug 2008 | KR |
WO-9828714 | Jul 1998 | WO |
WO-2009027161 | Mar 2009 | WO |
Entry |
---|
Kirchner et al. “A Location-aware Prefetchting Mechanism,” Project work at Distributed Information Systems Laboratory LSIR (2004). |
Molina, “Aiming and Guiding Navigation with a Non-visual GPS Application,” Department of Design Sciences Faculty of Engineering, Lund University (2010). |
Office action for U.S. Appl. No. 13/244,717 dated Nov. 15, 2011. |
Office action for U.S. Appl. No. 13/244,764 dated Nov. 28, 2011. |
Piras et al., “Compact GML: merging mobile computing and mobile cartography,” CRS4, Center for Advanced Studies, Research and Development in Sardinia (2004). |
Reichenbacher et al., “The World in Your Pocket—Towards a Mobile Cartography,” Proc. of the 20th International Cartographic Conference (2001). |
Weber, “Mobile Map Browsers: Anticipated User Interaction for Data Pre-Fetching,” Thesis, The University of Maine, (2010). |
Google Developers, “Google Maps API,” (2012). Retrieved from the Internet on Aug. 31, 2012: URL:https://developers.google.com/maps/. |
International Search Report and Written Opinion for Application No. PCT/US2012/051574, dated Feb. 15, 2013. |
International Search Report and Written Opinion for Application No. PCT/US2012/051577, dated Feb. 15, 2013. |
International Search Report and Written Opinion for Application No. PCT/US2012/065002, dated Mar. 29, 2013. |
International Search Report and Written Opinion for Application No. PCT/US2012/065008, dated Mar. 29, 2013. |
International Search Report for Application No. PCT/US2012/051564, dated Feb. 18, 2013. |
Mapquest, “JavaScript Maps API,” (2012). Retrieved from the Internet on Aug. 31, 2012: URL:http://developer.mapquest.com/web/products/featured/javascript. |
MSDN, “Get Started Using Bing Maps,” (2012). Retrieved from the Internet on Aug. 31, 2012: URL:http://msdn.microsoft.com/en-us/library/dd877180.aspx. |
Wiki, “API,” (2012). Retrieved from the Internet on Aug. 31, 2012: URL:http://wiki.openstreetmap.org/wiki/API. |