US20150286741A1 - Pre-Fetching Map Data Based on a Tile Budget - Google Patents
Pre-Fetching Map Data Based on a Tile Budget Download PDFInfo
- Publication number
- US20150286741A1 US20150286741A1 US14/746,523 US201514746523A US2015286741A1 US 20150286741 A1 US20150286741 A1 US 20150286741A1 US 201514746523 A US201514746523 A US 201514746523A US 2015286741 A1 US2015286741 A1 US 2015286741A1
- Authority
- US
- United States
- Prior art keywords
- map data
- client device
- map
- user
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000015654 memory Effects 0.000 claims abstract description 55
- 238000000034 method Methods 0.000 claims description 67
- 230000004044 response Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 description 37
- 230000000007 visual effect Effects 0.000 description 32
- 230000003993 interaction Effects 0.000 description 18
- 238000013507 mapping Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000000977 initiatory effect Effects 0.000 description 7
- 238000009877 rendering Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G06F17/30902—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G06F17/30241—
-
- G06F17/30876—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Definitions
- 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.
- 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.
- 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.
- 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.
- the map data may contain the boundaries of continents, oceans, and major landmasses.
- that map data may identify countries, states, homelands, protectorates, other major geographic regions.
- 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.
- 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.
- GPS global positioning satellite
- 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.
- 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.
- 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.
- 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.
- 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.
- a computer-implemented method comprises: identifying, on a client device, one or more map points of interest; identifying, based on the map points of interest, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of a visual display of map data in response to a subsequent user request; requesting, from a remote map database storing the map data, the pre-fetch map data tiles corresponding to one or more map points of interest; receiving, at the client device, the pre-fetch map data tiles from the remote map database and, during receiving of the pre-fetch map data tiles, determining, at the client device, if the tile budget has been met by the received pre-fetch map data tiles, where, if a tile budget has been met, the client device stops receiving additional pre-fetch map data tiles from the map database, and if the tile budget has not been met, the client device, continues receiving additional pre-fetch map data tiles from the map database until the tile budget is met or until all pre-fetch map data tiles
- a computer-readable medium storing instructions, the instructions when executed by a processor cause the processor to: identify, on a client device, one or more map points of interest; identify, based on the map points of interest, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of a visual display of map data in response to a subsequent user request; request, from a remote map database storing the map data, the pre-fetch map data tiles corresponding to one or more map points of interest; receive, at the client device, the pre-fetch map data tiles from the remote map database and, during receiving of the pre-fetch map data tiles, determining, at the client device, if a tile budget has been met by the received pre-fetch map data tiles, where, if the tile budget has been met, the client device stops receiving additional pre-fetch map data tiles from the map database, and if the tile budget has not been met, the client device, continues receiving additional pre-fetch map data tiles from the map database until the tile budget is met
- a computer system for fetching map tile data to be used in constructing a visual display of map data on a client device comprises: a display module for constructing and displaying the visual display of the map data, where the map data is stored in a remote map database as a plurality of map data tiles; a map point identifier module that identifies one or more map points of interest that define pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of a visual display of map data in response to a subsequent user request; a database interface module to request, from the map database, the pre-fetch map data tiles from the remote map database and to receive the pre-fetch map data tiles from the remote map database; and a tile budget module that, during receiving of the pre-fetch map data tiles, is to determine if the tile budget has been met by the received pre-fetch map data tiles, where, if the tile budget has been met, the database interface module is to stop receiving additional pre-fetch map data tiles from
- the tile budget is a preset total number of map tiles or preset total amount of map data. In some embodiments, the tile budget may be checked after the client device has received each of the pre-fetch map data tiles.
- a plurality of map points of interest are identified for pre-fetching and that plurality is prioritized in order from highest to lowest, where pre-fetching occurs on the highest priority map point of interest first.
- the map database stores map data at different zoom levels, each containing respective sets of map data tiles, such that pre-fetching of map data tiles occurs at a plurality of the zoom levels.
- FIG. 1 is high-level block diagram of a wireless network depicting a wireless base station connected to a server containing map data for selectively communicating that map data to a various client devices on the network.
- FIG. 2 is a block diagram of an example map generator in the client device of FIG. 1 .
- FIG. 3 illustrates a portion of the data structure for the map database of FIG. 1 .
- FIGS. 4A , 4 B, and 4 C illustrate example renditions of map data at three different zoom levels, respectively.
- FIG. 5 illustrates an example process or flow diagram for identifying points of interest and map zoom levels that are used in requesting pre-fetch map data from a server and for performing a tile budget on the pre-fetch map data from the server.
- FIGS. 6A , 6 B, and 6 C illustrate example renditions of the map data of FIGS. 4A , 4 B, and 4 C, at three different zoom levels, respectively, and showing points of interest at the different zoom levels.
- FIG. 7 illustrates an example process or flow diagram for constructing and displaying pre-fetch map data visually.
- FIG. 8 illustrates an example process or flow diagram for performing the tile budgeting of FIG. 5 .
- FIG. 9 illustrates an example process or flow diagram for determining points of interest to be used in identifying the pre-fetch map data.
- FIG. 10 illustrates an example process or flow diagram similar to that of FIG. 5 , but which ranks points of interest in priority as part of a pre-fetching map data process.
- FIG. 11 illustrates an example process or flow diagram for identifying the pre-fetch map data in response to the identified points of interest, zoom levels, and tile radii.
- the present application describes techniques for fetching map data over a selected subset of the entire map data available, by identifying one or more points of interest for display on client device.
- the techniques which may be implemented on a client device such as a mobile or handheld device, will access map data pertaining to these points of interest from a remote server. In this way, the techniques do not need to access an entire map database, but rather only a portion thereof.
- the techniques employ a map memory budgeting process that allows access to a threshold amount of map data.
- the techniques allow the client device to perform tile budgeting on the received map data tiles to limit the amount of map data accessed.
- the present application describes techniques for fetching map data over a selected subset of the entire map data available, by identifying one or more points of interest for display on client device, where those points of interest are identified by the user of the client device, for example by the user searching for a particular location or direction between locations through a mapping application on the client device.
- the points of interest are automatically determined by the client device, for example by the client device identifying a set of most recently accessed points of interest or a set of most frequency accessed points of interest.
- the points of interest are identified to a remote server that contains a map database of the entire map data, including map data for the points of interest.
- the remove server begins transmitting the map data, corresponding to these points of interest, to the client device for storage and display to the user.
- the server may send an identified set of map data tiles, termed pre-fetch map data tiles.
- the client device receives the pre-fetch map data tiles until a tile budget has been met, which the client device may assess upon receipt of each map data tile sent from the server or which it may assess periodically, for example, after receipt of any subset of map data tiles sent from the server.
- the client device continues receiving map data tiles until the tile budget is met.
- the client device prioritizes the points of interest and requests and receives map data tiles in an order according to these priorities. If the client device receives all of the pre-fetch map data tiles for the highest priority point of interest, then the client device starts requesting and receiving the pre-fetch map data tiles for the next highest priority point of interest, which the client device keeps doing until a tile budget has been met.
- the tile budget may be a fixed number of map tiles or it map be a total mount of map data that is to be stored on the client device.
- 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.
- 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.
- the pre-fetching is of map data tiles.
- FIG. 1 is a high-level block diagram that illustrates a computing environment for a pre-fetch map data system 100 that may be used to access and store map data within a map database.
- the computing environment includes a map database 103 connected to or disposed within a server 105 , which is, in turn, connected to a number of client devices 115 through a network 125 .
- the network 125 includes 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. While only three clients 115 are illustrated in FIG. 1 to simplify and clarify the description, it is understood that any number of client computers are supported and can be in communication with the server 105 .
- 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.
- 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.
- 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.
- module and “routine” refer to computer program logic used to provide the specified functionality.
- a module or a routine can be implemented in hardware, firmware, and/or software.
- 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 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.
- 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 .
- the database 103 does not need to be physically located within server 105 .
- 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 .
- 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.
- the client 115 may include various modules within or associated with the map generator 120 , including a database interface module 181 that operates to retrieve map data from the server 105 and map database 103 .
- the map generator 120 further includes a map point identifier module 182 capable of identifying one or more points of interest that are to be used by a display module 184 to create a visual map display of received map data on the interface 134 .
- the points of interest are communicated by the interface module 181 through the network interface 136 through network 125 to the server 105 , which responds by sending pre-fetch map data from the map database 103 back to the client device 115 , where this pre-fetch map data is received by the database interface module 181 and is stored in a map buffer memory 180 of the client 115 .
- a map data selection module 186 accesses the stored pre-fetch map data and determines which portion of that buffered map data is to be provided to the display module 184 for creating the visual map display on the interface 134 .
- the module 186 is responsive (after pre-fetching) to user interaction with the interface 134 to determine which portion of the pre-fetched map data should be displayed to the desires in response to a subsequent user interaction, which is determined by a centralized map position, user scrolling, and zoom level, for example.
- the map generator 120 further includes a tile budget module 188 that limits the amount of pre-fetch map data tiles that can be received to the client device.
- the client 115 receives map data tiles at the database interface module 181 , where upon receipt of one or any predetermined number of map data tiles the tile budget module 188 determines if the client device 115 has received a sufficient, or threshold amount of map data tiles, at which point the tile budget module 188 instructs the database interface module 181 to stop requesting and storing additional map data tiles.
- tile budget module 188 is described as contained within the map generator 120 , in other examples, a tile budget module may be stored in the server 105 or in both the client 115 and the server 105 .
- the tile budget module 188 may be implemented in the map generator 120 of the client 115 or implemented as a standalone or integrated module at the server 105 .
- the database interface module 181 receives zoom level data from a zoom level module 190 , which identifies at what zoom level the module 181 is to request pre-fetch map data tiles. In this way, the client device 115 may receive pre-fetch map data at one or more zoom levels to store in the buffer memory 180 .
- map generator 120 may have different and/or other modules than the ones described herein.
- functions described herein can be distributed among the modules in accordance with other embodiments in a different manner than that described herein.
- 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.
- FIG. 3 illustrates an example data structure 200 of a portion of the map database 103 .
- the map data is stored in numerous (n) different zoom level data structures (only three of which are shown) 202 A, 202 B, and 202 C, where each data structure is formed by a plurality of map data tiles.
- the map tiles represent the basic building blocks for constructing a map display.
- Each map tile contains necessary map data to construct a portion of the map display, including data identifying roads, buildings, and geographic boundaries, such as water lines, county lines, city boundaries, state lines, mountains, parks, etc.
- the map data may be stored in any number of different zoom level data structures. In an embodiment, 19 total zoom levels are stored in the map database 103 .
- the number of tiles at each zoom level increases, e.g., linearly, quadratically, exponentially, or otherwise.
- 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 .
- 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 .
- the display module 184 may employ a C++, HTML, XML, JAVA, or Visual Basic application for generating a visual display of the map tiles.
- each map tile in a zoom level data structure is allocated the same memory allocation size.
- each tile 204 A- 204 R may be a bitmap image 10 Kbytes in size. This may be achieved, for example, by having each map tile cover the same sized geographic area.
- the data size for each tile may vary, but each tile may still, in some embodiments, be allotted the same maximum memory space.
- the data tiles will have different memory space allocations within a zoom level data structure.
- FIGS. 4A-4C illustrate visual map displays, e.g., that may be fully or partially displayed on the user interface 134 , where each figure provides a visual display at a different zoom level.
- the server 105 is able to transmit map data to respective clients 115 in chunks of data defined by these map tiles.
- 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 .
- the map display 400 is formed of a plurality of map tiles 402 - 432 .
- the map tiles 402 - 432 are each the same in size, e.g., covering the same geographic area and having the same memory size.
- Each of the displays 300 , 400 , and 500 is of a portion of the overall map data, which comprises many more map data tiles.
- the map tiles that form each visual map display have various levels of detail.
- the tiles 302 - 318 illustrate geographic boundaries, but no roads, only highways and/or interstates, while the tiles of FIG. 4C are at a higher zoom level and contain information on roads, buildings, parks, end points, etc.
- zoom level 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.
- 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.
- FIG. 5 illustrates a routine or process 700 for requesting and receiving map data tiles from a remote server.
- the routine or process 700 awaits initiation, which may result from user action, such as a user activating a mapping application on the client device 115 . Initiation may also result from user or application initiated searches, direction end points, and stored location accesses by a user or application.
- the block 701 functions to automatically initiate the routine or process 700 , for example, by periodically initiating pre-fetching map data.
- the block 701 may be designed to initiate the process every hour, every day, a few times a day, or at any other suitable periodic interval.
- that automatic initiation can occur in response to an event unbeknownst to the user of the client device, such as when mobile wireless services are initially activated on the client device or when the client device enters an entirely new geographic region, such as when a user has traveled to a city location.
- the map point identification module 182 automatically (i.e., without user interaction or initiation) determines one or more map points of interest to display to a user via the interface 134 .
- the module 182 may automatically identify 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 the routine or process of FIG. 8 .
- the module 182 may manually determine the points of interest based on previous 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.
- 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 . 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.
- FIGS. 6A-6C illustrate the visual map displays ( 300 , 400 , and 500 ) of FIGS. 4A-4C , respectively, but showing map points of interest identified by the module 182 .
- FIG. 6A illustrates three points of interest 602 , 604 , and 606 ; while FIG. 6B illustrates only two points of interest 604 and 606 ; and FIG. 6C illustrates only one point of interest 606 .
- routine or process 700 For convenience purposes the remainder of the routine or process 700 will be described in terms of a single map point of interest being identified by the block 702 . It will be understood, that the same blocks would be executed if multiple map points of interest were identified.
- one or more desired zoom levels are identified (by map zoom module 190 ). If the routine or process 700 is initiated by the user interacting with a mapping application, the zoom level module 190 may identify a zoom level based on the zoom level selected by the user. In other embodiments, the zoom level module 190 may identify the most recently last used zoom level by the user or the most frequently used zoom level as the identified zoom level.
- the database interface module 181 communicates the map points of interest (block 702 ) and the zoom level data (block 704 ) to the server 105 , in particular, in the illustrated embodiment, to a pre-fetch data engine 750 at the server 105 (see, FIG. 1 ).
- the pre-fetch data engine 750 then identifies the one or more map points of interest and zoom level(s) and determines the map data corresponding to the one or more points of interest at the selected one or more zoom levels that are to be fetched from the map database 103 .
- the engine 750 collects the corresponding map tiles and begins transmitting that map data to the map generator 120 .
- the block 706 requests 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 server 105 may send the responsive pre-fetch map data tiles in subsets, i.e., in blocks of one or more map data tiles, but not in a continuous stream. As each subset of the pre-fetch map data tiles is received, the block 706 may send a return signal, in the form of an “acknowledgment” signal, back to the server 105 to confirm receipt of the data.
- the tile budget module 188 performs a tile budget check on the received map data tiles to determine if a tile budget has been met. If the tile budget has not been met, then the client device 115 stores that pre-fetch map data through a block 710 (database interface module 181 ), in the memory buffer 190 . At a block 712 , the routine or process 700 determines whether all pre-fetch map data tiles have been received to the client device 115 . If not, then control is passed to block 708 to receive further map data tiles and perform tile budget checks.
- control is passed to the block 706 , which transmits a “continuing request” signal that instructs to the server 115 to send the next subset of pre-fetch map data tiles. If there are no further map data tiles to received from the server, the routine or process 700 passes control to a block 713 , where the client device 115 awaits some user interaction, i.e., a subsequent interaction after the pre-fetching of blocks 701 - 710 .
- the module 186 identifies a subset of the previously-stored pre-fetch map data to display to the user on a visual display that is rendered by the display module 184 through a block 716 .
- the tile budget check at the block 708 identifies that a tile budget will be met by the received map data tile(s)
- the received map data tile(s) will be stored, if memory allows, by a block 718 , and control is passed to the block 713 .
- This step prevents further map data tiles from being received and stored on the client device 115 .
- the block 706 is instructed to transmit a “stop” instruction signal to the server, which the server then interprets and stops from sending any further map data tiles.
- FIG. 7 illustrates a routine or process 800 that may be performed by the blocks 714 - 716 (display module 184 ), i.e., in response to a user request for map data occurring after the pre-fetch map data has been automatically collected and stored.
- the client device 115 maintains all received pre-fetch map data from the server 105 in the memory buffer 180 .
- the display module 184 identifies an initial subset of the pre-fetch map data and, at a block 804 , constructs and displays on the user interface 134 a visual map display of this initial subset of the pre-fetch map data, including one or more map points of interest.
- the initial display is provided to visualize the map points of interest.
- the display is an initial display in that the client device will have likely received and stored a large number of map data tiles, too many to display at any given time, irrespective of zoom level; therefore only a subset of the map data tiles are displayed at one time.
- the display module 184 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 are to be displayed. For example, at the block 806 , the display module 184 detects a user scrolling across the displayed map data to depict 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 806 identifies map manipulation user interaction data to the block 802 , which then determines which other pre-fetched map data, stored in the buffer memory 180 , is to be displayed in response to the user interaction. Or the block 806 , upon appropriate instruction from the user, terminates the routine or process 800 entirely, for example, when a user selects to exit a mapping application.
- FIG. 8 illustrates a routine or process 900 that may be implemented by the block 708 (the tile budget module 188 ).
- a process 902 analyzes the subset of pre-fetch map data tiles received from the server 105 , where in the illustrated example such analysis includes incrementing a total number of map data tiles received and determining a total amount of map data (measured in kilobytes, megabytes, or gigabytes) received from the server 105 .
- the tile budget module 188 identifies a first tile budget criterion.
- the map generator 120 may use any number of tile budget criteria. The illustrated example is described with respect to two tile budget criteria: a total number of received map data tiles and a total amount of map data.
- the module 188 initially identifies the total number of received map data tiles, in the discussed embodiment.
- the tile budget module 188 determines if the tile budget has been met by the received subset of pre-fetch map data tiles, i.e., whether the number of received map data tiles exceeds a threshold number of data tiles stored in the memory 132 of the client device 115 . If the first tile budget criterion is not met, a block 908 determines if there are additional tile budget criteria. If there are, control is passed back to the block 904 , where the tile budget module 188 identifies the next tile budget criterion and the steps repeat. Once there are no further tile budget criterion, at a block 910 control is passed back to block 708 .
- a “stop” instruction is sent to the server 115 (the database interface module 181 ) to instruct the server to stop sending any additional pre-fetching map data tiles.
- the block 914 instructs that control be passed to the block 714 for storing the received pre-fetch map data tiles, if there is sufficient memory for storing the tiles. If there is not, the received pre-fetch map data tiles exceeding the tile budget are discarded.
- FIG. 9 illustrates a routine or process 1000 for automatically (prior to user interaction or initiation) determining points of interest as may be used by block 702 .
- the map point identifier module 182 performs a series of data polling operations, accessing data stored in the memory 132 to aggregate one or more potential points of interest.
- the module 182 polls current user interaction data or stored user map interaction data, such as data on past user interactions with map data displayed on the interface 134 , including data such as locations highlighted by the user, map points placed on a map display by the user, and geographic regions most displayed on a map display, for example.
- the module 182 polls data on user searches, identifying locations the user has requested be identified on a map display.
- the module 182 polls any other location data, including current geographic position and stored geographic position.
- the latter includes can data such as tracking geographic position of the client device 115 to automatically determine location patterns.
- the module 182 may collect data on client device locations during workweek, Monday-Friday, and use that data for pre-fetching map data develop travel patterns of the client device.
- the module 182 may collect different data to determine different typical travel patterns, and thus different potential points of interest, during the weekend. It is noted that these examples are described in terms of points of interest, but as used herein, a point of interest represents a particular point on a map or any region of a map that can be defined (specifically or even generally) by a map point.
- the module 182 aggregates the polled potential points of interest data and provides this data to a block 1010 which 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 1010 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 1010 may determine the points of interest comparatively, for example, by determining which points of interest are the most frequently accessed.
- the block 1010 may make the determination based on which points of interest are most recently accessed.
- FIG. 10 illustrates a routine or process 1100 similar to that of FIG. 5 , but in which a plurality of map points are identified and ranked in a priority order that is used to determine the order in which the client device 115 requests pre-fetch map data from the server 105 .
- the routine or process 1100 awaits initiation, in a similar manner to that of block 701 in FIG. 5 .
- the module 182 identifies a plurality of map points of interest, for example, performing similar operations to that of block 702 described above, namely, determining the map points of interest based on manual input from and/or automatically identifying map points of interest, from a current location of the client 115 , most recently searched points of interest, stored points of interest, and/or most recently visited points of interest.
- the module 180 identifies a desired zoom level or zoom levels for each of the map points of interest.
- the map point identifier module 182 performs a prioritization on the identified map points of interest, ranking them in order of priority from a highest to a lowest.
- the block 1105 then identifies a highest priority map point of interest, which a block 1106 (module 181 ) identifies to the remote server 105 , more specifically to a pre-fetch data engine (not shown).
- a block 1108 performs tile budget checking, similar to that of the block 708 described above, while a block 1110 stores the received pre-fetch map data tiles if the tile budget has not been met.
- a block 1111 stores the received pre-fetch map data tiles, if possible, and passes control to a block 1113 , where the client device awaits user interaction like block 713 of FIG. 5 , after which at a block 1115 , the module 186 identifies tiles among the stored pre-fetch map data tiles that are to be used by module 184 (block 1116 ) for rendering a visual display of the map data.
- the routine or process 1100 determines whether there are additional pre-fetch map data tiles corresponding to the highest priority map point of interest. If so, control is passed back to block 1108 for receiving additional subsets of the pre-fetch map data tiles and performing tile budget checking or optionally block 1106 . These additional pre-fetch map data tiles may be those of different zoom levels for the highest priority map point of interest, data tiles associated with areas around or adjacent to the highest priority map point of interest, etc. If not, then all pre-fetch map data tiles for the first map point of interest have been received and stored, and the routine or process 1100 passes control to a block 1114 which determines if there is at least one additional map point of interest.
- control is passed to the block 1105 which identifies the next highest priority map point of interest and communicates the same to the block 1106 which then requests pre-fetch map data tiles corresponding to that next highest priority map point of interest. This process continues until pre-fetch map data tiles for all map points of interest have been downloaded or until the tile budget has been met. If there are no additional map points of interest, the block 1114 passes control to the block 1113 .
- FIG. 11 illustrates an example routine or process 1200 as may be performed by the server 105 , specifically the pre-fetch data engine 750 , upon receipt of the identified points of interest and zoom levels at a block 1202 .
- the server 105 accesses the map database 103 , and takes one of the points of interest and identifies the map data corresponding to that point of interest, at a block 1206 .
- a block 1208 identifies a zoom level, e.g., from the zoom level received to block 1202 , at which to collect the initial set of map data from the database 103 .
- a block 1210 identifies the first point of interest collects all map data tiles the correspond to the point of interest, which thereby identifies the pre-fetch map data associated with that point of interest. For example, if each tile in the map data is stored with an assigned position value relative to the other tiles, such as an assigned longitude value and an assigned latitude value or an assigned column value and an assigned row value, then the block 1210 may identify a pre-determined set of map data tiles adjacent the map data tile containing the point of interest.
- the server 105 transmits a subset of the identified pre-fetch map data tiles 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 .
- the server sends a subset of the pre-fetch map data tiles, which allows the client device 115 to frequently perform tile budgeting checks on the received data.
- the subset includes at least one pre-fetch map data tile; and the smaller the subset the more frequently the client device 115 will check for whether the tile budget has been reached.
- 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.
- the client device 115 i.e., the database interface module 181 via block 706 , sends requests for pre-fetch map data on a per point of interest basis, i.e., awaiting receipt of all pre-fetch map data tiles for one point of interest, before identifying the next point of interest to the server 105 .
- the client device 115 requests pre-fetch map data for a plurality of map points of interest at one time.
- 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. If not the routine or process 1200 ends.
- 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.
- a LAN local area network
- MAN metropolitan area network
- WAN wide area network
- mobile wide area network
- wired or wireless network a local area network
- private network a wide area network
- virtual private network a virtual private network.
- 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.
- one or more computer systems e.g., a standalone, client or server computer system
- one or more hardware modules of a computer system e.g., a processor or a group of processors
- software e.g., an application or application portion
- a hardware module may be implemented mechanically or electronically.
- 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.
- 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.
- “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 transmission (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).
- a resource e.g., a collection of information
- processors may be 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.
- 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).)
- SaaS software as a service
- 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.
- 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.
- 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.
- Coupled and “connected” along with their derivatives.
- 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.
- the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion.
- 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.
- “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).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Remote Sensing (AREA)
- Navigation (AREA)
- Instructional Devices (AREA)
Abstract
To select map data for storage in a memory of a computing device, geographic locations for which a user of a client device is expected to subsequently request digital maps are determined. Prior to receiving a user request for map data related to the geographic locations, pre-fetch map data for generating digital maps including the plurality of geographic locations is determined. Further, a memory budget for storing map data in a memory of the client device is determined along with a priority for retrieving map data from a remote database to the memory of the client device. At least a portion of the determined pre-fetch map data is retrieved from the remote database to the memory of the client device in accordance with the determined memory budget and the determined priority.
Description
- 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 a client device, one or more map points of interest; identifying, based on the map points of interest, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of a visual display of map data in response to a subsequent user request; requesting, from a remote map database storing the map data, the pre-fetch map data tiles corresponding to one or more map points of interest; receiving, at the client device, the pre-fetch map data tiles from the remote map database and, during receiving of the pre-fetch map data tiles, determining, at the client device, if the tile budget has been met by the received pre-fetch map data tiles, where, if a tile budget has been met, the client device stops receiving additional pre-fetch map data tiles from the map database, and if the tile budget has not been met, the client device, continues receiving additional pre-fetch map data tiles from the map database until the tile budget is met or until all pre-fetch map data tiles corresponding to the one or more map points of interest have been received at the client device; and storing the received pre-fetch map data tiles in a local memory on the client device until a subsequent user request.
- In another embodiment, a computer-readable medium storing instructions, the instructions when executed by a processor cause the processor to: identify, on a client device, one or more map points of interest; identify, based on the map points of interest, pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of a visual display of map data in response to a subsequent user request; request, from a remote map database storing the map data, the pre-fetch map data tiles corresponding to one or more map points of interest; receive, at the client device, the pre-fetch map data tiles from the remote map database and, during receiving of the pre-fetch map data tiles, determining, at the client device, if a tile budget has been met by the received pre-fetch map data tiles, where, if the tile budget has been met, the client device stops receiving additional pre-fetch map data tiles from the map database, and if the tile budget has not been met, the client device, continues receiving additional pre-fetch map data tiles from the map database until the tile budget is met or until all pre-fetch map data tiles corresponding to the one or more map points of interest have been received at the client device; and store the received pre-fetch map data tiles in a local memory on the client device until a subsequent user request.
- In yet 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 comprises: a display module for constructing and displaying the visual display of the map data, where the map data is stored in a remote map database as a plurality of map data tiles; a map point identifier module that identifies one or more map points of interest that define pre-fetch map data tiles to be requested from a remote map database and stored on the client device for eventual rendering of a visual display of map data in response to a subsequent user request; a database interface module to request, from the map database, the pre-fetch map data tiles from the remote map database and to receive the pre-fetch map data tiles from the remote map database; and a tile budget module that, during receiving of the pre-fetch map data tiles, is to determine if the tile budget has been met by the received pre-fetch map data tiles, where, if the tile budget has been met, the database interface module is to stop receiving additional pre-fetch map data tiles from the remote map database, and if a tile budget has not been met, the database interface module is to continue receiving additional pre-fetch map data tiles from the map database until the tile budget is met or until all pre-fetch map data tiles corresponding to the one or more map points of interest have been received at the client device.
- In some embodiments, the tile budget is a preset total number of map tiles or preset total amount of map data. In some embodiments, the tile budget may be checked after the client device has received each of the pre-fetch map data tiles.
- In some embodiments a plurality of map points of interest are identified for pre-fetching and that plurality is prioritized in order from highest to lowest, where pre-fetching occurs on the highest priority map point of interest first.
- In some embodiments, the map database stores map data at different zoom levels, each containing respective sets of map data tiles, such that pre-fetching of map data tiles occurs at a plurality of the zoom levels.
- 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.
-
FIG. 1 is high-level block diagram of a wireless network depicting a wireless base station connected to a server containing map data for selectively communicating that map data to a various client devices on the network. -
FIG. 2 is a block diagram of an example map generator in the client device ofFIG. 1 . -
FIG. 3 illustrates a portion of the data structure for the map database ofFIG. 1 . -
FIGS. 4A , 4B, and 4C illustrate example renditions of map data at three different zoom levels, respectively. -
FIG. 5 illustrates an example process or flow diagram for identifying points of interest and map zoom levels that are used in requesting pre-fetch map data from a server and for performing a tile budget on the pre-fetch map data from the server. -
FIGS. 6A , 6B, and 6C illustrate example renditions of the map data ofFIGS. 4A , 4B, and 4C, at three different zoom levels, respectively, and showing points of interest at the different zoom levels. -
FIG. 7 illustrates an example process or flow diagram for constructing and displaying pre-fetch map data visually. -
FIG. 8 illustrates an example process or flow diagram for performing the tile budgeting ofFIG. 5 . -
FIG. 9 illustrates an example process or flow diagram for determining points of interest to be used in identifying the pre-fetch map data. -
FIG. 10 illustrates an example process or flow diagram similar to that ofFIG. 5 , but which ranks points of interest in priority as part of a pre-fetching map data process. -
FIG. 11 illustrates an example process or flow diagram for identifying the pre-fetch map data in response to the identified points of interest, zoom levels, and tile radii. - The present application describes techniques for fetching map data over a selected subset of the entire map data available, by identifying one or more points of interest for display on client device. The techniques, which may be implemented on a client device such as a mobile or handheld device, will access map data pertaining to these points of interest from a remote server. In this way, the techniques do not need to access an entire map database, but rather only a portion thereof. To avoid accessing too much of the map data, the techniques employ a map memory budgeting process that allows access to a threshold amount of map data. When the map data is stored at the remote server in the form of map data tiles, the techniques allow the client device to perform tile budgeting on the received map data tiles to limit the amount of map data accessed.
- More particularly, the present application describes techniques for fetching map data over a selected subset of the entire map data available, by identifying one or more points of interest for display on client device, where those points of interest are identified by the user of the client device, for example by the user searching for a particular location or direction between locations through a mapping application on the client device. In other embodiments, the points of interest are automatically determined by the client device, for example by the client device identifying a set of most recently accessed points of interest or a set of most frequency accessed points of interest. In either case, the points of interest are identified to a remote server that contains a map database of the entire map data, including map data for the points of interest. With the points of interest identified, the remove server begins transmitting the map data, corresponding to these points of interest, to the client device for storage and display to the user. Storing map data in data blocks known as map data “tiles,” the remote server sends the map data in the form of a map data tiles. For each point of interest, the server may send an identified set of map data tiles, termed pre-fetch map data tiles. The client device receives the pre-fetch map data tiles until a tile budget has been met, which the client device may assess upon receipt of each map data tile sent from the server or which it may assess periodically, for example, after receipt of any subset of map data tiles sent from the server. The client device continues receiving map data tiles until the tile budget is met. In some embodiments, the client device prioritizes the points of interest and requests and receives map data tiles in an order according to these priorities. If the client device receives all of the pre-fetch map data tiles for the highest priority point of interest, then the client device starts requesting and receiving the pre-fetch map data tiles for the next highest priority point of interest, which the client device keeps doing until a tile budget has been met. The tile budget may be a fixed number of map tiles or it map be a total mount of map data that is to be stored on the client device.
- 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.
-
FIG. 1 is a high-level block diagram that illustrates a computing environment for a pre-fetchmap data system 100 that may be used to access and store map data within a map database. As illustrated inFIG. 1 , the computing environment includes amap database 103 connected to or disposed within aserver 105, which is, in turn, connected to a number ofclient devices 115 through anetwork 125. Thenetwork 125 includes 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. While only threeclients 115 are illustrated inFIG. 1 to simplify and clarify the description, it is understood that any number of client computers are supported and can be in communication with theserver 105. - Both the
server 105 and theclients 115 are computers that may include a CPU 130 (only shown in the clients), one or more computerreadable memories 132, one or more user interfaces 134 (keyboard, touch screen, etc.), anetwork 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. Theclient 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, theclient 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 themap database 103 or other remote source of map data. Furthermore, while in some examples, thenetwork 125 is described as a wireless network, thenetwork 125 may be any wired or wireless network, where theclients 115 are devices on the network. - The
server 105 and theclients 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 theserver 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 themap generators 120, modified, and stored back into thedatabase 103. Further, thedatabase 103 does not need to be physically located withinserver 105. For example, thedatabase 103 can be partially stored within aclient 115, can be stored in external storage attached to theserver 105, or can be stored in a network attached storage. Additionally, there may bemultiple servers 105 that connect to asingle database 103. Likewise, themap database 103 may be stored in multiple different or separate physical data storage devices. - Each
client 115 executes one of themap generators 120, each of which receives pre-fetch map data from theserver 105 and generates a visual display of the received map data that is presented to the user on a display of theinterface 134. Themap generator 120 is able to adjust that visual display in response to user interactions with theinterface 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
FIG. 2 , theclient 115 may include various modules within or associated with themap generator 120, including adatabase interface module 181 that operates to retrieve map data from theserver 105 andmap database 103. Themap generator 120 further includes a mappoint identifier module 182 capable of identifying one or more points of interest that are to be used by adisplay module 184 to create a visual map display of received map data on theinterface 134. The points of interest are communicated by theinterface module 181 through thenetwork interface 136 throughnetwork 125 to theserver 105, which responds by sending pre-fetch map data from themap database 103 back to theclient device 115, where this pre-fetch map data is received by thedatabase interface module 181 and is stored in amap buffer memory 180 of theclient 115. A mapdata selection module 186 accesses the stored pre-fetch map data and determines which portion of that buffered map data is to be provided to thedisplay module 184 for creating the visual map display on theinterface 134. Themodule 186, therefore, is responsive (after pre-fetching) to user interaction with theinterface 134 to determine which portion of the pre-fetched map data should be displayed to the desires in response to a subsequent user interaction, which is determined by a centralized map position, user scrolling, and zoom level, for example. - In the illustrated embodiment, the
map generator 120 further includes atile budget module 188 that limits the amount of pre-fetch map data tiles that can be received to the client device. Theclient 115, for example, receives map data tiles at thedatabase interface module 181, where upon receipt of one or any predetermined number of map data tiles thetile budget module 188 determines if theclient device 115 has received a sufficient, or threshold amount of map data tiles, at which point thetile budget module 188 instructs thedatabase interface module 181 to stop requesting and storing additional map data tiles. - While the
tile budget module 188 is described as contained within themap generator 120, in other examples, a tile budget module may be stored in theserver 105 or in both theclient 115 and theserver 105. Thetile budget module 188, for example, may be implemented in themap generator 120 of theclient 115 or implemented as a standalone or integrated module at theserver 105. In some embodiments, thedatabase interface module 181 receives zoom level data from azoom level module 190, which identifies at what zoom level themodule 181 is to request pre-fetch map data tiles. In this way, theclient device 115 may receive pre-fetch map data at one or more zoom levels to store in thebuffer memory 180. - 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.FIG. 3 illustrates anexample data structure 200 of a portion of themap database 103. The map data is stored in numerous (n) different zoom level data structures (only three of which are shown) 202A, 202B, and 202C, where each data structure is formed by a plurality of map data tiles. Thedata structure 202B, which is the only one numbered for explanation purposes, shows the map data at zoom level, z=2, is formed of 18 map data tiles, 204A-204R. The map tiles represent the basic building blocks for constructing a map display. Each map tile contains necessary map data to construct a portion of the map display, including data identifying roads, buildings, and geographic boundaries, such as water lines, county lines, city boundaries, state lines, mountains, parks, etc. The map data may be stored in any number of different zoom level data structures. In an embodiment, 19 total zoom levels are stored in themap database 103. - 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 thedisplay module 184. In either case, thedisplay 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 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. -
FIGS. 4A-4C illustrate visual map displays, e.g., that may be fully or partially displayed on theuser interface 134, where each figure provides a visual display at a different zoom level. In the illustrated embodiments,FIG. 4A provides avisual map display 300 at an example zoom level, z=6, constructed of a series of map tiles 302-318, which cover the same size geographic area and which have the same amount of memory size. - In operation, the
server 105 is able to transmit map data torespective clients 115 in chunks of data defined by these map tiles. For example, to transmit the map data needed to construct themap display 300, theserver 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 themap database 103 and for quantizing communication of the map data over thenetwork 125 to theclients 115. - In comparison to
FIG. 4A ,FIG. 4B illustrates avisual map display 400 at a zoom level higher than the zoom level ofFIG. 4A , in this example zoom level, z=10. Themap display 400 is formed of a plurality of map tiles 402-432. Like the map tiles 302-318, the map tiles 402-432 are each the same in size, e.g., covering the same geographic area and having the same memory size.FIG. 4C illustrates anothervisual map display 500 at a third even higher zoom level, zoom level z=12, formed of map data tiles. - Each of the
displays - As illustrated across
FIGS. 4A-4C , the map tiles that form each visual map display have various levels of detail. The tiles 302-318 illustrate geographic boundaries, but no roads, only highways and/or interstates, while the tiles ofFIG. 4C are at a higher zoom level and contain information on roads, buildings, parks, end points, etc. - 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
FIGS. 4A-4C , zoom level, z=12, represents the saturation zoom level. - 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 thelocal device 115 to allow efficient user interaction with that display. -
FIG. 5 illustrates a routine orprocess 700 for requesting and receiving map data tiles from a remote server. At ablock 701, the routine orprocess 700 awaits initiation, which may result from user action, such as a user activating a mapping application on theclient device 115. Initiation may also result from user or application initiated searches, direction end points, and stored location accesses by a user or application. In some embodiments, theblock 701 functions to automatically initiate the routine orprocess 700, for example, by periodically initiating pre-fetching map data. Theblock 701 may be designed to initiate the process every hour, every day, a few times a day, or at any other suitable periodic interval. In some embodiments, that automatic initiation can occur in response to an event unbeknownst to the user of the client device, such as when mobile wireless services are initially activated on the client device or when the client device enters an entirely new geographic region, such as when a user has traveled to a city location. - At a
block 702, the mappoint identification module 182 automatically (i.e., without user interaction or initiation) determines one or more map points of interest to display to a user via theinterface 134. Themodule 182 may automatically identify points of interest, for example, by determining a GPS position of the current location of theclient 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, themodule 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 themodule 182 and theblock 702 is described in the routine or process ofFIG. 8 . - In other examples, the
module 182 may manually determine the points of interest based on previous user input, for example, through the user providing an address into a data field presented on theinterface 134, or through the user selecting to find a point of interest obtained through interaction with theinterface 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 themodule 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 bymodule 182 and collected by theblock 702. Further still, these manual methods can be modified into automatic methods of map point identification, by having theblock 702 access historical data on previous, manual user data inputs. -
FIGS. 6A-6C illustrate the visual map displays (300, 400, and 500) ofFIGS. 4A-4C , respectively, but showing map points of interest identified by themodule 182. The points of interest that are displayed on theuser interface 134 depending on the zoom level.FIG. 6A illustrates three points ofinterest FIG. 6B illustrates only two points ofinterest FIG. 6C illustrates only one point ofinterest 606. - For convenience purposes the remainder of the routine or
process 700 will be described in terms of a single map point of interest being identified by theblock 702. It will be understood, that the same blocks would be executed if multiple map points of interest were identified. - Returning to
FIG. 5 , at ablock 704, one or more desired zoom levels are identified (by map zoom module 190). If the routine orprocess 700 is initiated by the user interacting with a mapping application, thezoom level module 190 may identify a zoom level based on the zoom level selected by the user. In other embodiments, thezoom level module 190 may identify the most recently last used zoom level by the user or the most frequently used zoom level as the identified zoom level. - At a
block 706, thedatabase interface module 181 communicates the map points of interest (block 702) and the zoom level data (block 704) to theserver 105, in particular, in the illustrated embodiment, to apre-fetch data engine 750 at the server 105 (see,FIG. 1 ). Thepre-fetch data engine 750 then identifies the one or more map points of interest and zoom level(s) and determines the map data corresponding to the one or more points of interest at the selected one or more zoom levels that are to be fetched from themap database 103. Theengine 750 collects the corresponding map tiles and begins transmitting that map data to themap generator 120. - In the illustrated embodiment, the
block 706 requests 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. Optionally, in some embodiments where theblock 706 requests all pre-fetch map data at once, theserver 105 may send the responsive pre-fetch map data tiles in subsets, i.e., in blocks of one or more map data tiles, but not in a continuous stream. As each subset of the pre-fetch map data tiles is received, theblock 706 may send a return signal, in the form of an “acknowledgment” signal, back to theserver 105 to confirm receipt of the data. - As the map data tiles are received at a
block 708, thetile budget module 188 performs a tile budget check on the received map data tiles to determine if a tile budget has been met. If the tile budget has not been met, then theclient device 115 stores that pre-fetch map data through a block 710 (database interface module 181), in thememory buffer 190. At ablock 712, the routine orprocess 700 determines whether all pre-fetch map data tiles have been received to theclient device 115. If not, then control is passed to block 708 to receive further map data tiles and perform tile budget checks. Optionally in some embodiments control is passed to theblock 706, which transmits a “continuing request” signal that instructs to theserver 115 to send the next subset of pre-fetch map data tiles. If there are no further map data tiles to received from the server, the routine orprocess 700 passes control to ablock 713, where theclient device 115 awaits some user interaction, i.e., a subsequent interaction after the pre-fetching of blocks 701-710. Once as user as performed an interaction that is to result in rendering (i.e., construction and display) of a visual map display, through ablock 714, themodule 186 identifies a subset of the previously-stored pre-fetch map data to display to the user on a visual display that is rendered by thedisplay module 184 through ablock 716. - If the tile budget check at the
block 708 identifies that a tile budget will be met by the received map data tile(s), the received map data tile(s) will be stored, if memory allows, by ablock 718, and control is passed to theblock 713. This step prevents further map data tiles from being received and stored on theclient device 115. Optionally, in some embodiments, upon a tile budget being met, theblock 706 is instructed to transmit a “stop” instruction signal to the server, which the server then interprets and stops from sending any further map data tiles. -
FIG. 7 illustrates a routine orprocess 800 that may be performed by the blocks 714-716 (display module 184), i.e., in response to a user request for map data occurring after the pre-fetch map data has been automatically collected and stored. Theclient device 115 maintains all received pre-fetch map data from theserver 105 in thememory buffer 180. At ablock 802, thedisplay module 184 identifies an initial subset of the pre-fetch map data and, at ablock 804, constructs and displays on the user interface 134 a visual map display of this initial subset of the pre-fetch map data, including one or more map points of interest. The initial display is provided to visualize the map points of interest. The display is an initial display in that the client device will have likely received and stored a large number of map data tiles, too many to display at any given time, irrespective of zoom level; therefore only a subset of the map data tiles are displayed at one time. At ablock 806, thedisplay module 184 detects further user interactions with theinterface 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 are to be displayed. For example, at theblock 806, thedisplay module 184 detects a user scrolling across the displayed map data to depict 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. Theblock 806 identifies map manipulation user interaction data to theblock 802, which then determines which other pre-fetched map data, stored in thebuffer memory 180, is to be displayed in response to the user interaction. Or theblock 806, upon appropriate instruction from the user, terminates the routine orprocess 800 entirely, for example, when a user selects to exit a mapping application. -
FIG. 8 illustrates a routine orprocess 900 that may be implemented by the block 708 (the tile budget module 188). Aprocess 902 analyzes the subset of pre-fetch map data tiles received from theserver 105, where in the illustrated example such analysis includes incrementing a total number of map data tiles received and determining a total amount of map data (measured in kilobytes, megabytes, or gigabytes) received from theserver 105. At ablock 904, thetile budget module 188 identifies a first tile budget criterion. Themap generator 120 may use any number of tile budget criteria. The illustrated example is described with respect to two tile budget criteria: a total number of received map data tiles and a total amount of map data. Themodule 188 initially identifies the total number of received map data tiles, in the discussed embodiment. At ablock 906, thetile budget module 188 determines if the tile budget has been met by the received subset of pre-fetch map data tiles, i.e., whether the number of received map data tiles exceeds a threshold number of data tiles stored in thememory 132 of theclient device 115. If the first tile budget criterion is not met, ablock 908 determines if there are additional tile budget criteria. If there are, control is passed back to theblock 904, where thetile budget module 188 identifies the next tile budget criterion and the steps repeat. Once there are no further tile budget criterion, at ablock 910 control is passed back to block 708. - Upon the various tile budget criteria checks of
block 906, if themodule 188 determines that the tile budget has been met, at ablock 912, a “stop” instruction is sent to the server 115 (the database interface module 181) to instruct the server to stop sending any additional pre-fetching map data tiles. Theblock 914 instructs that control be passed to theblock 714 for storing the received pre-fetch map data tiles, if there is sufficient memory for storing the tiles. If there is not, the received pre-fetch map data tiles exceeding the tile budget are discarded. -
FIG. 9 illustrates a routine orprocess 1000 for automatically (prior to user interaction or initiation) determining points of interest as may be used byblock 702. The mappoint identifier module 182 performs a series of data polling operations, accessing data stored in thememory 132 to aggregate one or more potential points of interest. At ablock 1002, themodule 182 polls current user interaction data or stored user map interaction data, such as data on past user interactions with map data displayed on theinterface 134, including data such as locations highlighted by the user, map points placed on a map display by the user, and geographic regions most displayed on a map display, for example. At ablock 1004, themodule 182 polls data on user searches, identifying locations the user has requested be identified on a map display. At ablock 1006, themodule 182 polls any other location data, including current geographic position and stored geographic position. The latter includes can data such as tracking geographic position of theclient device 115 to automatically determine location patterns. For example, themodule 182 may collect data on client device locations during workweek, Monday-Friday, and use that data for pre-fetching map data develop travel patterns of the client device. Themodule 182 may collect different data to determine different typical travel patterns, and thus different potential points of interest, during the weekend. It is noted that these examples are described in terms of points of interest, but as used herein, a point of interest represents a particular point on a map or any region of a map that can be defined (specifically or even generally) by a map point. - At a
block 1008, themodule 182 aggregates the polled potential points of interest data and provides this data to ablock 1010 which determines a set of one or more points of interest to be used byblock 704 to determine the corresponding one or more tile radii. Theblock 1010 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. Theblock 1010 may determine the points of interest comparatively, for example, by determining which points of interest are the most frequently accessed. Theblock 1010 may make the determination based on which points of interest are most recently accessed. -
FIG. 10 illustrates a routine orprocess 1100 similar to that ofFIG. 5 , but in which a plurality of map points are identified and ranked in a priority order that is used to determine the order in which theclient device 115 requests pre-fetch map data from theserver 105. At ablock 1101, the routine orprocess 1100 awaits initiation, in a similar manner to that ofblock 701 inFIG. 5 . At ablock 1102, themodule 182 identifies a plurality of map points of interest, for example, performing similar operations to that ofblock 702 described above, namely, determining the map points of interest based on manual input from and/or automatically identifying map points of interest, from a current location of theclient 115, most recently searched points of interest, stored points of interest, and/or most recently visited points of interest. At ablock 1104, themodule 180 identifies a desired zoom level or zoom levels for each of the map points of interest. - At a block 1105, the map
point identifier module 182 performs a prioritization on the identified map points of interest, ranking them in order of priority from a highest to a lowest. The block 1105 then identifies a highest priority map point of interest, which a block 1106 (module 181) identifies to theremote server 105, more specifically to a pre-fetch data engine (not shown). Ablock 1108 performs tile budget checking, similar to that of theblock 708 described above, while ablock 1110 stores the received pre-fetch map data tiles if the tile budget has not been met. If the tile budget has been met, then ablock 1111 stores the received pre-fetch map data tiles, if possible, and passes control to ablock 1113, where the client device awaits user interaction likeblock 713 ofFIG. 5 , after which at ablock 1115, themodule 186 identifies tiles among the stored pre-fetch map data tiles that are to be used by module 184 (block 1116) for rendering a visual display of the map data. - At a
block 1112, the routine orprocess 1100 determines whether there are additional pre-fetch map data tiles corresponding to the highest priority map point of interest. If so, control is passed back to block 1108 for receiving additional subsets of the pre-fetch map data tiles and performing tile budget checking or optionally block 1106. These additional pre-fetch map data tiles may be those of different zoom levels for the highest priority map point of interest, data tiles associated with areas around or adjacent to the highest priority map point of interest, etc. If not, then all pre-fetch map data tiles for the first map point of interest have been received and stored, and the routine orprocess 1100 passes control to ablock 1114 which determines if there is at least one additional map point of interest. If so, control is passed to the block 1105 which identifies the next highest priority map point of interest and communicates the same to theblock 1106 which then requests pre-fetch map data tiles corresponding to that next highest priority map point of interest. This process continues until pre-fetch map data tiles for all map points of interest have been downloaded or until the tile budget has been met. If there are no additional map points of interest, theblock 1114 passes control to theblock 1113. -
FIG. 11 illustrates an example routine orprocess 1200 as may be performed by theserver 105, specifically thepre-fetch data engine 750, upon receipt of the identified points of interest and zoom levels at ablock 1202. At ablock 1204, theserver 105 accesses themap database 103, and takes one of the points of interest and identifies the map data corresponding to that point of interest, at ablock 1206. Ablock 1208 identifies a zoom level, e.g., from the zoom level received to block 1202, at which to collect the initial set of map data from thedatabase 103. For the identified zoom level, ablock 1210 identifies the first point of interest collects all map data tiles the correspond to the point of interest, which thereby identifies the pre-fetch map data associated with that point of interest. For example, if each tile in the map data is stored with an assigned position value relative to the other tiles, such as an assigned longitude value and an assigned latitude value or an assigned column value and an assigned row value, then theblock 1210 may identify a pre-determined set of map data tiles adjacent the map data tile containing the point of interest. - At a
block 1212, theserver 105 transmits a subset of the identified pre-fetch map data tiles collected atblock 1210 to the requestingclient device 115, where the requestingclient device 115 is identified by address information in a header of the data provided to block 1202. The server sends a subset of the pre-fetch map data tiles, which allows theclient device 115 to frequently perform tile budgeting checks on the received data. The subset includes at least one pre-fetch map data tile; and the smaller the subset the more frequently theclient device 115 will check for whether the tile budget has been reached. - In the illustrated embodiment, at a
block 1214, theserver 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 theblock 1208 which identifies the next zoom level and the process repeats, as described. In some embodiments, the client device 115 (i.e., thedatabase interface module 181 via block 706), sends requests for pre-fetch map data on a per point of interest basis, i.e., awaiting receipt of all pre-fetch map data tiles for one point of interest, before identifying the next point of interest to theserver 105. In other embodiments, the client device 115 (again through block 706) requests pre-fetch map data for a plurality of map points of interest at one time. In the case of the later, if no additional zoom level data is required for the particular point of interest, then ablock 1216 determines if additional points of interest have been identified by the client device, where if so, control is passed back to theblock 1206 which identifies the next point of interest and the process repeats, as described. If not the routine orprocess 1200 ends. - 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 threeclients 115 are illustrated inFIG. 1 to simplify and clarify the description, it is understood that any number of client computers are supported and can be in communication with theserver 105. - 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 transmission (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.
Claims (20)
1. A method for selecting map data for storage in a memory of a computing device, the method comprising:
determining, by one or more processors, a plurality of geographic locations for which a user of a client device is expected to subsequently request digital maps;
prior to receiving a user request for map data related to the plurality of geographic locations, determining, by one or more processors, pre-fetch map data for generating digital maps including the plurality of geographic locations;
determining, by one or more processors, a memory budget for storing map data in a memory of the client device;
determining, by one or more processors, a priority for retrieving map data from a remote database to the memory of the client device; and
causing, by one or more processors, retrieval of at least a portion of the determined pre-fetch map data from the remote database to the memory of the client device in accordance with the determined memory budget and the determined priority.
2. The method claim 1 , wherein determining the memory budget is based on one or more of (i) a number of map tiles, each tile corresponding to a portion of a digital map of a fixed size at a certain zoom level, or (ii) a pre-set amount of memory in the client device.
3. The method of claim 1 , wherein determining the priority is based on which points of interest were most recently accessed by the user.
4. The method of claim 1 , wherein determining the priority is based on which points of interest were most frequently accessed by the user.
5. The method of claim 1 , wherein determining the priority is based on an amount of time during which a point of interest previously was displayed on a digital map.
6. The method of claim 1 , wherein prioritizing the plurality of points of interest based on previous user selections.
7. The method of claim 1 , further comprising:
identifying, by one or more processors, one or more zoom levels of the pre-fetch map data based on a zoom level most recently used by the user.
8. The method of claim 1 , further comprising:
identifying, by one or more processors, one or more zoom levels of the pre-fetch map data based on a zoom level most frequently used by the user.
9. The method of claim 1 , wherein causing the retrieval includes causing the a remote server to transmit at least some of the pre-fetch map data in order from highest to lowest priority, including:
during the retrieval, continuously checking whether the tile budget has been met, and
causing the client device to stop receiving further pre-fetch map data when the tile budget has been met.
10. A client device comprising:
one or more processors;
a user interface;
a non-transitory computer-readable memory storing thereon instructions that, when executed on one or more processors, cause the client device to:
determine a memory budget for storing map data in the memory,
prior to receiving a user request for map data related a plurality of geographic locations for which a user of the client device is expected to subsequently request digital maps, receive at least a portion of pre-fetch map data for generating digital maps including the plurality of geographic locations, wherein the pre-fetch map data is selected based on the determined budget, and wherein the pre-fetch map data is transmitted to the client device from a remote map database in accordance with a determined priority, and
in response to a subsequent request for a digital map including one or more of the plurality of geographic locations, generate the digital map using the pre-fetch map data stored the memory.
11. The client device of claim 10 , wherein the instructions determine the memory budget based on one or more of (i) a number of map tiles, each tile corresponding to a portion of a digital map of a fixed size at a certain zoom level, or (ii) a pre-set amount of memory in the client device.
12. The client device of claim 10 , wherein the priority is determined based on one or more of:
(i) which points of interest were most recently accessed by the user,
(ii) which points of interest were most frequently accessed by the user,
(iii) an amount of time during which a point of interest previously was displayed on a digital map, or
(iv) previous user selections.
13. The client device of claim 10 , wherein the pre-fetch map data is transmitted in order from highest to lowest priority, and wherein the instructions further cause the client device to:
during the retrieval, continuously check whether the tile budget has been met, and
stop receiving further pre-fetch map data when the tile budget has been met.
14. The client device of claim 10 , wherein the instructions further cause the client device to:
identify one or more zoom levels of the pre-fetch map data based on a zoom level most recently used by the user.
15. The client device of claim 10 , wherein the instructions further cause the client device to:
identify one or more zoom levels of the pre-fetch map data based on a zoom level most frequently used by the user.
16. A non-transitory computer-readable medium storing thereon instructions that, when executed by one or more processors, cause the one or more processors to:
determine a plurality of geographic locations for which a user of a client device is expected to subsequently request digital maps;
prior to receiving a user request for map data related to the plurality of geographic locations, determine pre-fetch map data for generating digital maps including the plurality of geographic locations;
determine a memory budget for storing map data in a memory of the client device;
determine a priority for retrieving map data from a remote database to the memory of the client device; and
cause retrieval of at least a portion of the determined pre-fetch map data from the remote database to the memory of the client device in accordance with the determined memory budget and the determined priority.
17. The computer-readable medium of claim 16 , wherein the instructions further cause the one or more processors to determine the memory budget based on one or more of (i) a number of map tiles, each tile corresponding to a portion of a digital map of a fixed size at a certain zoom level, or (ii) a pre-set amount of memory in the client device.
18. The computer-readable medium of claim 16 , wherein the instructions cause the one or more processors to determine the priority based on one or more of:
(i) which points of interest were most recently accessed by the user,
(ii) which points of interest were most frequently accessed by the user,
(iii) an amount of time during which a point of interest previously was displayed on a digital map, or
(iv) previous user selections.
19. The computer-readable medium of claim 16 , wherein the instructions further cause the client device to:
identify one or more zoom levels of the pre-fetch map data based on a zoom level most recently used by the user.
20. The computer-readable medium of claim 16 , wherein the instructions further cause the client device to:
identify one or more zoom levels of the pre-fetch map data based on a zoom level most frequently used by the user.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/746,523 US20150286741A1 (en) | 2011-11-16 | 2015-06-22 | Pre-Fetching Map Data Based on a Tile Budget |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/297,382 US9063951B1 (en) | 2011-11-16 | 2011-11-16 | Pre-fetching map data based on a tile budget |
US14/746,523 US20150286741A1 (en) | 2011-11-16 | 2015-06-22 | Pre-Fetching Map Data Based on a Tile Budget |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/297,382 Continuation US9063951B1 (en) | 2011-11-16 | 2011-11-16 | Pre-fetching map data based on a tile budget |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150286741A1 true US20150286741A1 (en) | 2015-10-08 |
Family
ID=53397140
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/297,382 Active 2032-06-05 US9063951B1 (en) | 2011-11-16 | 2011-11-16 | Pre-fetching map data based on a tile budget |
US14/746,523 Abandoned US20150286741A1 (en) | 2011-11-16 | 2015-06-22 | Pre-Fetching Map Data Based on a Tile Budget |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/297,382 Active 2032-06-05 US9063951B1 (en) | 2011-11-16 | 2011-11-16 | Pre-fetching map data based on a tile budget |
Country Status (1)
Country | Link |
---|---|
US (2) | US9063951B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160275131A1 (en) * | 2015-03-16 | 2016-09-22 | Here Global B.V. | Version Management for Incrementally Compiled Map Data |
US20180039655A1 (en) * | 2016-08-05 | 2018-02-08 | Yandex Europe Ag | Method of rendering a map |
WO2020072074A1 (en) * | 2018-10-05 | 2020-04-09 | Google Llc | Improving offline map data availability |
US11860942B1 (en) * | 2017-05-15 | 2024-01-02 | Amazon Technologies, Inc. | Predictive loading and unloading of customer data in memory |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514799B (en) * | 2012-06-25 | 2014-12-10 | 腾讯科技(深圳)有限公司 | Map server, and method and system of controlling visual field |
US8831882B1 (en) * | 2013-05-15 | 2014-09-09 | Google Inc. | Computing systems, devices and methods for identifying important access roads to a geographic location |
US9430858B1 (en) * | 2013-09-18 | 2016-08-30 | Amazon Technologies, Inc. | Dynamic cartography mapping system |
CN104457767B (en) * | 2013-09-18 | 2019-03-01 | 腾讯科技(深圳)有限公司 | The method and apparatus for realizing location-based service |
US9355484B2 (en) * | 2014-03-17 | 2016-05-31 | Apple Inc. | System and method of tile management |
US10105593B2 (en) * | 2014-04-08 | 2018-10-23 | Razer (Asia-Pacific) Pte. Ltd. | File prefetching for gaming applications accessed by electronic devices |
US20150290535A1 (en) * | 2014-04-15 | 2015-10-15 | King.Com Limited | Device, game and methods therefor |
US20150379957A1 (en) * | 2014-06-30 | 2015-12-31 | Ulrich Roegelein | Mobile tile renderer for vector data |
US9665924B2 (en) * | 2015-04-01 | 2017-05-30 | Microsoft Technology Licensing, Llc | Prioritized requesting of mapping layers |
EP3115855A1 (en) * | 2015-07-08 | 2017-01-11 | Siemens Aktiengesellschaft | Method for operating a technical process installation and a device |
US10593074B1 (en) * | 2016-03-16 | 2020-03-17 | Liberty Mutual Insurance Company | Interactive user interface for displaying geographic boundaries |
CN107070961B (en) | 2016-09-30 | 2020-06-23 | 阿里巴巴集团控股有限公司 | Hot spot area determination method and device based on geographic position data |
US10609554B2 (en) * | 2016-11-29 | 2020-03-31 | PlaceIQ, Inc. | System and method to collect device location context without the collection of raw, detailed location data at scale |
US20190392054A1 (en) * | 2018-06-20 | 2019-12-26 | Uber Technologies, Inc. | System and method for pre-fetching map data |
US10957117B2 (en) | 2018-10-15 | 2021-03-23 | Adobe Inc. | Intuitive editing of three-dimensional models |
US11449769B2 (en) * | 2019-04-11 | 2022-09-20 | International Business Machines Corporation | Cognitive analytics for graphical legacy documents |
RU2706465C1 (en) * | 2019-04-18 | 2019-11-19 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет геосистем и технологий" | Method of determining location, coordinates of points, geometrical and semantic characteristics of cartographic objects in interactive mode when operating with a traditional card in conditions of absence of communication for transmitting digital data |
RU2757066C2 (en) * | 2019-05-29 | 2021-10-11 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет геосистем и технологий" | Method for determining the location on a traditional map, coordinates of points, geometric and semantic characteristics of cartographic objects in interactive mode when working with a traditional map in the absence of communication for transmitting digital data |
US11435193B2 (en) * | 2019-12-30 | 2022-09-06 | Gm Cruise Holdings Llc | Dynamic map rendering |
US11323538B1 (en) * | 2020-03-12 | 2022-05-03 | PubNub, Inc. | Distributed transmission of messages in a communication network with selective multi-region replication |
US11601209B2 (en) * | 2020-11-25 | 2023-03-07 | At&T Intellectual Property I, L.P. | Modeling radio wave propagation in a fifth generation (5G) or other next generation network |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6691128B2 (en) * | 2001-04-19 | 2004-02-10 | Navigation Technologies Corp. | Navigation system with distributed computing architecture |
US20070219708A1 (en) * | 2006-03-15 | 2007-09-20 | Microsoft Corporation | Location-based caching for mobile devices |
US20090181650A1 (en) * | 2008-01-14 | 2009-07-16 | Research In Motion Limited | Dynamic prioritization of label downloads |
US20090281718A1 (en) * | 2008-05-09 | 2009-11-12 | Christophe Gibran | Predictive downloading of map data |
US20090326810A1 (en) * | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Caching navigation content for intermittently connected devices |
US20110131376A1 (en) * | 2009-11-30 | 2011-06-02 | Nokia Corporation | Method and apparatus for tile mapping techniques |
US20140073358A1 (en) * | 2010-11-30 | 2014-03-13 | Nokia Corporation | Method and apparatus for predicting and pre-fetching location information |
Family Cites Families (146)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5345086A (en) | 1962-11-28 | 1994-09-06 | Eaton Corporation | Automatic map compilation system |
IE61778B1 (en) | 1989-01-04 | 1994-11-30 | Emyville Enterprises | Image processing |
US5793310A (en) | 1994-02-04 | 1998-08-11 | Nissan Motor Co., Ltd. | Portable or vehicular navigating apparatus and method capable of displaying bird's eye view |
US5848373A (en) | 1994-06-24 | 1998-12-08 | Delorme Publishing Company | Computer aided map location system |
US6571279B1 (en) | 1997-12-05 | 2003-05-27 | Pinpoint Incorporated | Location enhanced information delivery system |
US6191782B1 (en) | 1996-08-30 | 2001-02-20 | Matsushita Electric Industrial Co., Ltd. | Terminal apparatus and method for achieving interactive operations by displaying a desired piece of image information at high speed using cache memories, out of a large amount of image information sent in a one-way direction |
US5831640A (en) | 1996-12-20 | 1998-11-03 | Cirrus Logic, Inc. | Enhanced texture map data fetching circuit and method |
US6199150B1 (en) | 1997-07-15 | 2001-03-06 | Matsushita Electric Industrial Co., Ltd. | Data memory apparatus forming memory map having areas with different access speeds |
US6061688A (en) | 1997-11-04 | 2000-05-09 | Marathon Oil Company | Geographical system for accessing data |
JPH11224047A (en) | 1998-02-06 | 1999-08-17 | Matsushita Electric Ind Co Ltd | Map information providing method and terminal device used in same |
US6073076A (en) | 1998-03-27 | 2000-06-06 | Navigation Technologies Corporation | Memory management for navigation system |
US6094685A (en) | 1998-04-14 | 2000-07-25 | Ascend Communications, Inc. | Use of control blocks to map multiple unidirectional connections |
US6400690B1 (en) | 1998-10-15 | 2002-06-04 | International Business Machines Corporation | Dual map system for navigation and wireless communication |
AU3629000A (en) | 1999-03-15 | 2000-10-04 | Index Systems, Inc. | System and method of channel map correction in an epg |
JP2001012957A (en) | 1999-06-29 | 2001-01-19 | Mitsubishi Electric Corp | Map updating system for car navigator and car navigation terminal |
JP2001075967A (en) | 1999-08-31 | 2001-03-23 | Denso Corp | Method for preparing information for updating map data and difference updating for map data |
EP1102510A1 (en) | 1999-10-12 | 2001-05-23 | Taskin Sakarya | Location system for mobile telephones |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US6684250B2 (en) | 2000-04-03 | 2004-01-27 | Quova, Inc. | Method and apparatus for estimating a geographic location of a networked entity |
US8060389B2 (en) | 2000-06-07 | 2011-11-15 | Apple Inc. | System and method for anonymous location based services |
US6456234B1 (en) | 2000-06-07 | 2002-09-24 | William J. Johnson | System and method for proactive content delivery by situation location |
US8489669B2 (en) | 2000-06-07 | 2013-07-16 | Apple Inc. | Mobile data processing system moving interest radius |
US6671424B1 (en) * | 2000-07-25 | 2003-12-30 | Chipworks | Predictive image caching algorithm |
US6703947B1 (en) | 2000-09-22 | 2004-03-09 | Tierravision, Inc. | Method for organizing and compressing spatial data |
EP1364510B1 (en) | 2000-10-26 | 2007-12-12 | Prismedia Networks, Inc. | Method and system for managing distributed content and related metadata |
US6724382B2 (en) * | 2000-12-04 | 2004-04-20 | Wildtangent, Inc. | Method and apparatus for distributing and displaying maps electronically |
GB2370460A (en) | 2000-12-21 | 2002-06-26 | Nokia Mobile Phones Ltd | Segmented route guidance |
US7082365B2 (en) | 2001-08-16 | 2006-07-25 | Networks In Motion, Inc. | Point of interest spatial rating search method and system |
JP2003067721A (en) | 2001-08-24 | 2003-03-07 | Pioneer Electronic Corp | Map image display system and method |
EP1288625B1 (en) | 2001-08-31 | 2011-07-27 | Pioneer Corporation | Communication-type navigation apparatus and server device |
US7962565B2 (en) | 2001-09-29 | 2011-06-14 | Siebel Systems, Inc. | Method, apparatus and system for a mobile web client |
US7006820B1 (en) | 2001-10-05 | 2006-02-28 | At Road, Inc. | Method for determining preferred conditions for wireless programming of mobile devices |
WO2003054654A2 (en) | 2001-12-21 | 2003-07-03 | Nokia Corporation | Location-based novelty index value and recommendation system and method |
US7263368B2 (en) | 2002-03-28 | 2007-08-28 | Intel Corporation | Anticipation of communication connectivity changes for mobile devices |
US8516114B2 (en) | 2002-03-29 | 2013-08-20 | International Business Machines Corporation | Method and apparatus for content pre-fetching and preparation |
EP1507246B1 (en) | 2002-05-17 | 2018-07-18 | Clarion Co., Ltd. | Map data product, map data processing program product, map data processing method, and map data processing device |
JP2004020220A (en) | 2002-06-12 | 2004-01-22 | Pioneer Electronic Corp | Communication system and method, communication terminal device, communication center device, and computer program |
AU2003253436A1 (en) | 2002-08-29 | 2004-03-19 | Matsushita Electric Industrial Co., Ltd. | Content processing apparatus and content display apparatus based on location information |
GB2395808A (en) | 2002-11-27 | 2004-06-02 | Sony Uk Ltd | Information retrieval |
JP4065202B2 (en) | 2003-01-07 | 2008-03-19 | 三菱電機株式会社 | Map data processing apparatus and center system |
JP4307121B2 (en) | 2003-03-25 | 2009-08-05 | 三菱電機株式会社 | Map data processor |
TW200424963A (en) | 2003-05-02 | 2004-11-16 | Sin Etke Technology Co Ltd | Cross country navigation system |
US9286795B2 (en) | 2003-05-09 | 2016-03-15 | Dimitri Vorona | System for transmitting, processing, receiving, and displaying traffic information |
US9607092B2 (en) | 2003-05-20 | 2017-03-28 | Excalibur Ip, Llc | Mapping method and system |
US7464109B2 (en) | 2003-09-30 | 2008-12-09 | U-Haul International, Inc. | System and method of compiling real property information from a central database |
JP4503410B2 (en) | 2004-01-20 | 2010-07-14 | クラリオン株式会社 | Map data update method, map data update system, authentication key generation device and navigation device for in-vehicle navigation device |
US7327349B2 (en) | 2004-03-02 | 2008-02-05 | Microsoft Corporation | Advanced navigation techniques for portable devices |
US7831387B2 (en) | 2004-03-23 | 2010-11-09 | Google Inc. | Visually-oriented driving directions in digital mapping system |
US7599790B2 (en) | 2004-03-23 | 2009-10-06 | Google Inc. | Generating and serving tiles in a digital mapping system |
WO2005104039A2 (en) | 2004-03-23 | 2005-11-03 | Google, Inc. | A digital mapping system |
US20050287509A1 (en) | 2004-06-04 | 2005-12-29 | Sherman Mohler | Learning objects in an electronic teaching system |
US20060058953A1 (en) | 2004-09-07 | 2006-03-16 | Cooper Clive W | System and method of wireless downloads of map and geographic based data to portable computing devices |
US20060080032A1 (en) | 2004-09-07 | 2006-04-13 | Cooper Clive W | System and method of wireless downloads of map and geographic based data to portable computing devices |
JP4079137B2 (en) | 2004-09-30 | 2008-04-23 | ブラザー工業株式会社 | Network management program, device and network management system |
JP4476789B2 (en) | 2004-11-18 | 2010-06-09 | クラリオン株式会社 | Map update system, navigation device, distribution device |
JP2006171106A (en) | 2004-12-13 | 2006-06-29 | Aisin Aw Co Ltd | Map data updating method, map data updating system, server and repeater system |
US7551182B2 (en) | 2005-01-18 | 2009-06-23 | Oculus Info Inc. | System and method for processing map data |
US7236882B2 (en) * | 2005-01-26 | 2007-06-26 | Broadcom Corporation | Downloading map segment(s) to a cell phone based upon its GPS coordinates and mobility |
US7584054B2 (en) | 2005-04-14 | 2009-09-01 | Baron Services, Inc. | System and method for displaying storm tracks |
US8103445B2 (en) | 2005-04-21 | 2012-01-24 | Microsoft Corporation | Dynamic map rendering as a function of a user parameter |
DE102005020152A1 (en) | 2005-04-29 | 2006-11-02 | Volkswagen Ag | Method for controlling map display in vehicle involves display device which is controlled in such manner that section of geographical map is displayed in three-dimensionally non-linear scale |
JP4284301B2 (en) | 2005-05-13 | 2009-06-24 | ソフトバンクモバイル株式会社 | Information distribution apparatus and information distribution system |
US20060277271A1 (en) | 2005-06-07 | 2006-12-07 | Yahoo! Inc. | Prefetching content based on a mobile user profile |
US7315259B2 (en) | 2005-08-11 | 2008-01-01 | Google Inc. | Techniques for displaying and caching tiled map data on constrained-resource services |
US20070050128A1 (en) | 2005-08-31 | 2007-03-01 | Garmin Ltd., A Cayman Islands Corporation | Method and system for off-board navigation with a portable device |
US8229914B2 (en) | 2005-09-14 | 2012-07-24 | Jumptap, Inc. | Mobile content spidering and compatibility determination |
US7796837B2 (en) | 2005-09-22 | 2010-09-14 | Google Inc. | Processing an image map for display on computing device |
JP4622822B2 (en) | 2005-11-16 | 2011-02-02 | 日産自動車株式会社 | Map data update system and map data update method |
US7663671B2 (en) | 2005-11-22 | 2010-02-16 | Eastman Kodak Company | Location based image classification with map segmentation |
JP4841242B2 (en) | 2005-12-15 | 2011-12-21 | アルパイン株式会社 | Map data updating method and map data updating apparatus |
JP4745045B2 (en) | 2005-12-15 | 2011-08-10 | アルパイン株式会社 | Navigation device |
KR20070077270A (en) | 2006-01-23 | 2007-07-26 | 엘지전자 주식회사 | An apparatus and method for providing information of navigation system |
DE602006010025D1 (en) * | 2006-03-31 | 2009-12-10 | Research In Motion Ltd | Method and apparatus for the dynamic identification of map objects in visually displayed maps of mobile communication devices |
US7925624B2 (en) | 2006-03-31 | 2011-04-12 | Amazon Technologies, Inc. | System and method for providing high availability data |
EP1840513B1 (en) * | 2006-03-31 | 2010-03-31 | Research In Motion Limited | Map version control methods and apparatus for updating the use of network-maintained map data sets for mobile communication devices |
US7907144B2 (en) * | 2006-04-14 | 2011-03-15 | Autodesk, Inc. | Optimized tile-based image storage |
US20070282621A1 (en) | 2006-06-01 | 2007-12-06 | Flipt, Inc | Mobile dating system incorporating user location information |
AU2006346400A1 (en) | 2006-07-21 | 2008-01-24 | Tele Atlas B.V. | Method for generating a location reference and method for mapping information to a position within a digital map database |
JP4656023B2 (en) | 2006-08-11 | 2011-03-23 | 株式会社デンソー | Map display device |
GB2440958A (en) | 2006-08-15 | 2008-02-20 | Tomtom Bv | Method of correcting map data for use in navigation systems |
US20080082225A1 (en) | 2006-08-15 | 2008-04-03 | Tomtom International B.V. | A method of reporting errors in map data used by navigation devices |
US7925982B2 (en) | 2006-09-01 | 2011-04-12 | Cheryl Parker | System and method of overlaying and integrating data with geographic mapping applications |
EP2064635A2 (en) | 2006-09-17 | 2009-06-03 | Nokia Corporation | Adaptable caching architecture and data transfer for portable devices |
US7571422B2 (en) | 2006-09-21 | 2009-08-04 | Kla-Tencor Technologies Corporation | Method for generating a design rule map having spatially varying overlay budget |
JP5001617B2 (en) * | 2006-09-29 | 2012-08-15 | アイシン・エィ・ダブリュ株式会社 | Map update data supply device, version table, map data update system, map update data supply program, and map data update program |
JP5308621B2 (en) | 2006-10-05 | 2013-10-09 | 日立オートモティブシステムズ株式会社 | Map data distribution system |
US20080086264A1 (en) | 2006-10-06 | 2008-04-10 | Microsoft Corporation | Popularity based geographical navigation |
US20080154655A1 (en) | 2006-10-31 | 2008-06-26 | Travelocity.Com Lp | Systems, Methods, and Computer Program Products for Retrieving Predicted Weather Conditions Corresponding to Selected Travel Itineraries Stored in an Inventory System |
US7734412B2 (en) * | 2006-11-02 | 2010-06-08 | Yahoo! Inc. | Method of client side map rendering with tiled vector data |
US8010407B1 (en) | 2006-11-14 | 2011-08-30 | Google Inc. | Business finder for locating local businesses to contact |
US20080132249A1 (en) | 2006-12-05 | 2008-06-05 | Palm, Inc. | Local caching of map data based on carrier coverage data |
US20080215240A1 (en) | 2006-12-18 | 2008-09-04 | Damian Howard | Integrating User Interfaces |
US8368695B2 (en) | 2007-02-08 | 2013-02-05 | Microsoft Corporation | Transforming offline maps into interactive online maps |
US7796056B2 (en) | 2007-03-28 | 2010-09-14 | Fein Gene S | Digital windshield information system employing a recommendation engine keyed to a map database system |
WO2008123769A1 (en) | 2007-04-06 | 2008-10-16 | Tele Atlas B.V. | Method, navigation device, and server for determining a location in a digital map database |
US8078641B2 (en) | 2007-04-25 | 2011-12-13 | Mitac International Corporation | Adjusting spatial operations based on map density |
US7996445B2 (en) | 2007-04-27 | 2011-08-09 | Network Appliance, Inc. | Block reallocation planning during read-ahead processing |
WO2008152932A1 (en) * | 2007-06-13 | 2008-12-18 | Nec Corporation | Image display device, image display method and image display program |
US7801675B2 (en) | 2007-07-13 | 2010-09-21 | Dash Navigation, Inc. | System and method of identifying portions of roads |
US20090030778A1 (en) | 2007-07-23 | 2009-01-29 | Motivepath, Inc. | System, method and apparatus for secure multiparty location based services |
US20090054103A1 (en) | 2007-08-20 | 2009-02-26 | Sony Ericsson Mobile Communications Ab | Portable communication device with automated localized calendar |
US8543130B2 (en) | 2007-08-24 | 2013-09-24 | Microsoft Corporation | Intelligent global positioning system (GPS) information detection |
EP2031352A1 (en) | 2007-08-29 | 2009-03-04 | Wayfinder Systems AB | Pre-fetching navigation maps |
US8374782B2 (en) * | 2007-08-29 | 2013-02-12 | Vodafone Group Services Limited | Pre-fetching navigation maps |
US8428867B2 (en) | 2007-08-30 | 2013-04-23 | Wirelesswerx International, Inc. | Configuring and using multi-dimensional zones |
US20090125228A1 (en) | 2007-11-09 | 2009-05-14 | Research In Motion Limited | System and method for providing dynamic route information to users of wireless communications devices |
JP2009140488A (en) | 2007-11-14 | 2009-06-25 | Fujitsu Ten Ltd | On-vehicle device and display control system |
DE102007061657A1 (en) | 2007-12-18 | 2009-07-02 | Navigon Ag | Method for generating a digital map |
US9354068B2 (en) | 2008-01-14 | 2016-05-31 | Blackberry Limited | System and method for dynamically downloading and displaying map data |
US8504945B2 (en) | 2008-02-01 | 2013-08-06 | Gabriel Jakobson | Method and system for associating content with map zoom function |
US20090210388A1 (en) | 2008-02-20 | 2009-08-20 | Microsoft Corporation | Efficiently discovering and synthesizing maps from a large corpus of maps |
US20090244095A1 (en) | 2008-04-01 | 2009-10-01 | Research In Motion Limited | Run-time label cache for efficient map labeling |
US8032297B2 (en) | 2008-05-08 | 2011-10-04 | Gabriel Jakobson | Method and system for displaying navigation information on an electronic map |
US20090315766A1 (en) | 2008-06-19 | 2009-12-24 | Microsoft Corporation | Source switching for devices supporting dynamic direction information |
US20100009662A1 (en) | 2008-06-20 | 2010-01-14 | Microsoft Corporation | Delaying interaction with points of interest discovered based on directional device information |
US8280631B2 (en) | 2008-10-02 | 2012-10-02 | Certusview Technologies, Llc | Methods and apparatus for generating an electronic record of a marking operation based on marking device actuations |
US7975025B1 (en) | 2008-07-08 | 2011-07-05 | F5 Networks, Inc. | Smart prefetching of data over a network |
US8214329B2 (en) | 2008-08-26 | 2012-07-03 | Zeewise, Inc. | Remote data collection systems and methods |
US8060406B2 (en) | 2008-09-26 | 2011-11-15 | Microsoft Corporation | Predictive geo-temporal advertisement targeting |
US8060582B2 (en) | 2008-10-22 | 2011-11-15 | Google Inc. | Geocoding personal information |
US9062982B2 (en) * | 2008-12-15 | 2015-06-23 | Blackberry Limited | Pre-loading waypoint data |
US8126885B2 (en) | 2008-12-19 | 2012-02-28 | Hewlett-Packard Development Company, L.P. | History based search service operable with multiple applications and services |
DE112009004442B4 (en) | 2009-03-04 | 2014-11-06 | Mitsubishi Electric Corporation | Card distribution server and card information terminal |
US20100250646A1 (en) | 2009-03-25 | 2010-09-30 | Microsoft Corporation | Mechanism for geo distributing application data |
US8560696B2 (en) | 2009-04-28 | 2013-10-15 | Intel Corporation | Transmission of advanced-MAP information elements in mobile networks |
US8385591B1 (en) | 2009-04-28 | 2013-02-26 | Google Inc. | System and method of using images to determine correspondence between locations |
US20100321399A1 (en) | 2009-06-18 | 2010-12-23 | Patrik Ellren | Maps from Sparse Geospatial Data Tiles |
US8341620B2 (en) | 2009-06-25 | 2012-12-25 | Microsoft Corporation | Streaming optimized virtual application images |
JP5054734B2 (en) | 2009-06-26 | 2012-10-24 | クラリオン株式会社 | Car navigation apparatus, program, and map data update method |
US20110054776A1 (en) | 2009-09-03 | 2011-03-03 | 21St Century Systems, Inc. | Location-based weather update system, method, and device |
WO2011047299A2 (en) | 2009-10-15 | 2011-04-21 | Binja Inc. | Mobile local search platform |
US20110095993A1 (en) | 2009-10-26 | 2011-04-28 | Adobe Systems Incorporated | Zoom adjustment process |
US20110099507A1 (en) | 2009-10-28 | 2011-04-28 | Google Inc. | Displaying a collection of interactive elements that trigger actions directed to an item |
US8566020B2 (en) | 2009-12-01 | 2013-10-22 | Nokia Corporation | Method and apparatus for transforming three-dimensional map objects to present navigation information |
US20110161875A1 (en) | 2009-12-29 | 2011-06-30 | Nokia Corporation | Method and apparatus for decluttering a mapping display |
JP2011199854A (en) | 2010-02-26 | 2011-10-06 | Panasonic Corp | Landmark search apparatus, electronic apparatus and imaging apparatus having the same, and landmark search method |
US20120254804A1 (en) * | 2010-05-21 | 2012-10-04 | Sheha Michael A | Personal wireless navigation system |
US8665266B2 (en) | 2010-06-23 | 2014-03-04 | The United States Of America, As Represented By The Secretary Of The Navy | Global visualization process terrain database builder |
US8478519B2 (en) | 2010-08-30 | 2013-07-02 | Google Inc. | Providing results to parameterless search queries |
WO2012081883A2 (en) | 2010-12-13 | 2012-06-21 | Samsung Electronics Co., Ltd. | Information providing apparatus and method for vehicles |
US9291713B2 (en) | 2011-03-31 | 2016-03-22 | Strava, Inc. | Providing real-time segment performance information |
US8683008B1 (en) | 2011-08-04 | 2014-03-25 | Google Inc. | Management of pre-fetched mapping data incorporating user-specified locations |
US8204966B1 (en) | 2011-09-26 | 2012-06-19 | Google Inc. | Map tile data pre-fetching based on user activity analysis |
US8280414B1 (en) | 2011-09-26 | 2012-10-02 | Google Inc. | Map tile data pre-fetching based on mobile device generated event analysis |
US20130097197A1 (en) | 2011-10-14 | 2013-04-18 | Nokia Corporation | Method and apparatus for presenting search results in an active user interface element |
US8711181B1 (en) | 2011-11-16 | 2014-04-29 | Google Inc. | Pre-fetching map data using variable map tile radius |
-
2011
- 2011-11-16 US US13/297,382 patent/US9063951B1/en active Active
-
2015
- 2015-06-22 US US14/746,523 patent/US20150286741A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6691128B2 (en) * | 2001-04-19 | 2004-02-10 | Navigation Technologies Corp. | Navigation system with distributed computing architecture |
US20070219708A1 (en) * | 2006-03-15 | 2007-09-20 | Microsoft Corporation | Location-based caching for mobile devices |
US20090181650A1 (en) * | 2008-01-14 | 2009-07-16 | Research In Motion Limited | Dynamic prioritization of label downloads |
US20090281718A1 (en) * | 2008-05-09 | 2009-11-12 | Christophe Gibran | Predictive downloading of map data |
US20090326810A1 (en) * | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Caching navigation content for intermittently connected devices |
US20110131376A1 (en) * | 2009-11-30 | 2011-06-02 | Nokia Corporation | Method and apparatus for tile mapping techniques |
US20140073358A1 (en) * | 2010-11-30 | 2014-03-13 | Nokia Corporation | Method and apparatus for predicting and pre-fetching location information |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160275131A1 (en) * | 2015-03-16 | 2016-09-22 | Here Global B.V. | Version Management for Incrementally Compiled Map Data |
US10002156B2 (en) * | 2015-03-16 | 2018-06-19 | Here Global B.V. | Version management for incrementally compiled map data |
US20180039655A1 (en) * | 2016-08-05 | 2018-02-08 | Yandex Europe Ag | Method of rendering a map |
US10223382B2 (en) * | 2016-08-05 | 2019-03-05 | Yandex Europe Ag | Method of and server for generating retrieving order commands for rendering a map |
US11860942B1 (en) * | 2017-05-15 | 2024-01-02 | Amazon Technologies, Inc. | Predictive loading and unloading of customer data in memory |
WO2020072074A1 (en) * | 2018-10-05 | 2020-04-09 | Google Llc | Improving offline map data availability |
US11741135B2 (en) | 2018-10-05 | 2023-08-29 | Google Llc | Improving offline map data availability |
Also Published As
Publication number | Publication date |
---|---|
US9063951B1 (en) | 2015-06-23 |
US20150186413A1 (en) | 2015-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9063951B1 (en) | Pre-fetching map data based on a tile budget | |
US9307045B2 (en) | Dynamically determining a tile budget when pre-fetching data in a client device | |
US9569463B1 (en) | Pre-fetching map data using variable map tile radius | |
US20150186443A1 (en) | Management of versioned map data tiles stored on a client device | |
US20130124563A1 (en) | Controlling pre-fetching of map data tiles based on selectable parameters | |
AU2018211233B2 (en) | Pre-fetching map tile data along a route | |
US9389088B2 (en) | Method of pre-fetching map data for rendering and offline routing | |
JP6756561B2 (en) | Prefetching map tile data based on mobile device generation event analysis | |
US9410815B1 (en) | System and method for displaying dynamic text content with a digital map |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZHU, RONGHUI;NOURSE, THOMAS G.;REEL/FRAME:036250/0044 Effective date: 20111027 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |