Movatterモバイル変換


[0]ホーム

URL:


US9202311B2 - Accessing map tiles - Google Patents

Accessing map tiles
Download PDF

Info

Publication number
US9202311B2
US9202311B2US13/761,026US201313761026AUS9202311B2US 9202311 B2US9202311 B2US 9202311B2US 201313761026 AUS201313761026 AUS 201313761026AUS 9202311 B2US9202311 B2US 9202311B2
Authority
US
United States
Prior art keywords
map
map tiles
tile
tiles
computing device
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.)
Active, expires
Application number
US13/761,026
Other versions
US20150170387A1 (en
Inventor
Yatin Dilip CHAWATHE
Jamie Zyskowski
Paul MESSMER
Lakshminath BHUVANAGIRI
Haitao Liu
Chandan Kashinath SHANBHAG
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLCfiledCriticalGoogle LLC
Priority to US13/761,026priorityCriticalpatent/US9202311B2/en
Assigned to GOOGLE INC.reassignmentGOOGLE INC.ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: MESSMER, Paul, BHUVANAGIRI, LAKSHMINATH, LIU, HAITAO, CHAWATHE, YATIN DILIP, ZYSKOWSKI, JAMIE, SHANBHAG, CHANDAN KASHINATH
Publication of US20150170387A1publicationCriticalpatent/US20150170387A1/en
Application grantedgrantedCritical
Publication of US9202311B2publicationCriticalpatent/US9202311B2/en
Assigned to GOOGLE LLCreassignmentGOOGLE LLCCHANGE OF NAME (SEE DOCUMENT FOR DETAILS).Assignors: GOOGLE INC.
Activelegal-statusCriticalCurrent
Adjusted expirationlegal-statusCritical

Links

Images

Classifications

Definitions

Landscapes

Abstract

The subject matter of this specification can be implemented in, among other things, a computer-implemented method for accessing map tiles. The method includes receiving a first request from a computing device for a portion of a map. The portion of the map includes combined map tiles that are a combination of corresponding ones of first map tiles from a first type of map and second map tiles from a second type of map. The method further includes providing first tile version identifiers and second tile version identifiers to the computing device in response to receiving the first request. The method further includes providing instructions to the computing device for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims priority from U.S. Provisional Application No. 61/597,689, filed Feb. 10, 2012, and entitled “Accessing Map Tiles,” which is incorporated herein by reference.
TECHNICAL FIELD
This instant specification relates to tile based mapping systems.
BACKGROUND
Many online mapping systems use tiles to represent portions of a map. A mapping system can use images, such as satellite and aerial images, for the map tiles. The mapping system can also generate the map tiles using vector data that describes geographic features, such as data from a geographic information system (GIS). Typically, rendering a set of map tiles from vector data for a large or complex map can take a significant amount of time, such as days or even weeks.
Once map tiles have been rendered, a client computing device can then download the map tiles from the mapping system and arrange the downloaded map tiles for display in an application window. The map often includes multiple zoom levels, where each map tile in a low, zoomed-in level represents a smaller portion of the map than each tile in a higher, zoomed-out level. In some cases, as a user pans and zooms through the map, the client computing device downloads additional map tiles from the mapping system for display in the application window.
SUMMARY
In one aspect, a computer-implemented method for accessing map tiles includes receiving a first request from a computing device for a portion of a map. The portion of the map includes combined map tiles that are a combination of corresponding ones of first map tiles from a first type of map and second map tiles from a second type of map. The first map tiles from the first type of map include bulk rendered map tiles and one or more individual rerendered map tiles. The method further includes providing first tile version identifiers and second tile version identifiers to the computing device in response to receiving the first request. Each of the first tile version identifiers uniquely identifies an instance of one of the first map tiles and each of the second tile version identifiers uniquely identifies an instance of one of the second map tiles. The method further includes providing instructions to the computing device for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles.
Implementations can include any, all, or none of the following features. The first tile version identifiers can each include a bulk tile version identifier and an individual tile version identifier. The method can include receiving one or more second requests from the computing device for the combined map tiles using the first tile version identifiers and the second tile version identifiers. The method can include providing the combined map tiles to the computing device in response to receiving the second requests. Providing the instructions for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles can include providing instructions to include the first tile version identifiers and the second tile version identifiers in corresponding path portions of web addresses in the second requests. The method can include combining the corresponding ones of the first map tiles and the second map tiles to generate the combined map tiles. The method can include determining that at least a threshold amount of time has passed after generating the individual rerendered map tiles. Combining the corresponding ones of the first map tiles and the second map tiles can include combining one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed. The method can include providing instructions to the computing device for displaying the combination of the corresponding ones of the first map tiles and the second map tiles. The method can include determining that at least a threshold amount of time has passed after generating the individual rerendered map tiles. Providing the instructions for displaying the combination of the corresponding ones of the first map tiles with the second map tiles can include providing instructions for displaying the combination of one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed. The method can include providing additional first tile version identifiers of the first map tiles and additional second tile version identifiers of the second map tiles to the computing device for one or more additional combined map tiles around the combined map tiles and instructions for using the additional first tile version identifiers and the additional second tile version identifiers to request the additional combined map tiles. The method can include distributing the first map tiles and the second map tiles to multiple map tile servers.
In one aspect, a computer-implemented system for accessing map tiles includes one or more data storages that store combined map tiles that are a combination of corresponding ones of first map tiles from a first type of map and second map tiles from a second type of map. The first map tiles from the first type of map include bulk rendered map tiles and one or more individual rerendered map tiles. The system further includes a first interface that receives a first request from a computing device for a portion of a map that includes the combined map tiles. The system further includes a map server that provides first tile version identifiers and second tile version identifiers to the computing device in response to receiving the first request, and provides instructions to the computing device for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles. Each of the first tile version identifiers uniquely identifies an instance of one of the first map tiles and each of the second tile version identifiers uniquely identifies an instance of one of the second map tiles.
Implementations can include any, all, or none of the following features. The first tile version identifiers can each include a bulk tile version identifier and an individual tile version identifier. The system can include a second interface that receives one or more second requests from the computing device for the combined map tiles using the first tile version identifiers and the second tile version identifiers. The system can include a map tile server that provides the combined map tiles to the computing device in response to receiving the second requests. The map server can provide instructions to include the first tile version identifiers and the second tile version identifiers in corresponding path portions of web addresses in the second requests. The system can include a tile renderer that combines the corresponding ones of the first map tiles and the second map tiles to generate the combined map tiles. The tile renderer can determine that at least a threshold amount of time has passed after generating the individual rerendered map tiles, and can combine one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed. The map server can provide instructions to the computing device for displaying the combination of the corresponding ones of the first map tiles and the second map tiles. The map server can determine that at least a threshold amount of time has passed after generating the individual rerendered map tiles, and can provide instructions for displaying the combination of one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed. The map server can provide additional first tile version identifiers of the first map tiles and additional second tile version identifiers of the second map tiles to the computing device for one or more additional combined map tiles around the combined map tiles and instructions for using the additional first tile version identifiers and the additional second tile version identifiers to request the additional combined map tiles. The system can include multiple map tile servers that provide the combined map tiles to the computing device in response to receiving one or more second requests for the combined map tiles using the first tile version identifiers and the second tile version identifiers. The system can include a tile renderer that distributes the first map tiles and the second map tiles to the map tile servers.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGS
FIG. 1 is a schematic diagram that shows an example of a system for accessing and managing updates to map tiles.
FIG. 2A shows an example of a graphical user interface for presenting updated map tiles.
FIG. 2B shows an example of a graphical user interface for updating map tiles.
FIG. 3A is flow chart that shows an example of a process for managing updates to map tiles.
FIG. 3B is flow chart that shows an example of a process for accessing map tiles.
FIG. 3C is flow chart that shows an example of a process for updating map tiles.
FIG. 4 is a schematic diagram that shows an example of a computing device and a mobile computing device.
DETAILED DESCRIPTION
This document describes systems and techniques for accessing and managing updates to map tiles. The system receives updates to one or more features in geospatial information that describes a map. The system includes map tiles that are rendered from the geospatial information. In response to receiving the updates, the system rerenders one or more of the map tiles for portions of the map that correspond to the updated features. The system associates the rerendered map tiles with identifiers that allow computing devices to request a download of specific instances of the rerendered map tiles over a network. In some implementations, the rerendered map tiles and identifiers can be used to replace temporary display objects while editing a map. Identifiers for instances of a map tile can also be used to control caching of the instances of the map tile within the network, such as at a computing device that requested the map tile or an intermediate computing device between the map system and the computing device that requested the tile.
FIG. 1 is a schematic diagram that shows an example of asystem100 for accessing and managing updates to map tiles. Thesystem100 includes amap tile storage102 that stores rendered map tiles. Abulk tile renderer104 retrieves features from amap feature database106 and processes the features to render the map tiles. Features may include, for example, a polyline that describes a road or a boundary of a geographical feature, such as a body of water. Themap feature database106 may include features for multiple maps, such as a topographical map and a street map. Thebulk tile renderer104 may then render map tiles for the multiple maps. In addition, thebulk tile renderer104 may render map tiles for multiple zoom levels of the maps, such as about five, ten, or fifteen zoom levels. Each tile may have a particular resolution, such as two hundred fifty-six by two hundred fifty-six pixels, and each tile at a particular zoom level may represent a different amount of geographical area per tile than tiles of other zoom levels.
Anapproval system108 may receive one ormore updates110 to the map features from one ormore computing devices112 over a network, such as a local network or the computing devices that make up the Internet. Theapproval system108 validates theupdates110 before storing theupdates110 in themap feature database106 and making theupdates110 available to anindividual tile renderer114. Theapproval system108 may use one or more of an automated approval process, a manual approval process, or a combination of automatic and manual processes.
Theindividual tile renderer114 rerenders the tiles that are affected by theupdates110 and stores the rerendered tiles in themap tile storage102 or another storage system. In some implementations, theindividual tile renderer114 uses the bulk rendered tiles as a starting point for the rerendering. Theindividual tile renderer114 may modify the contents of the ones of the bulk rendered tiles that correspond to theupdates110. For example, if theupdates110 indicate that a road has been moved, then theindividual tile renderer114 can rerender the ones of the bulk rendered tiles on which the road previously appeared before applying theupdates110 and the ones of the bulk rendered tiles on which the road now appears after applying theupdates110.
In some implementations, theindividual tile renderer114 and/or thebulk tile renderer104 store, in themap feature database106 and/or themap tile storage102, an association between each map feature and the ones of the tiles on which the map feature appears. Theindividual tile renderer114 can then use the association to identify ones of the tiles to be rerendered due to theupdates110 to the corresponding map features.
Theindividual tile renderer114 and/or thebulk tile renderer104 generate tile version identifiers for each of the rendered and/or rerendered instances of the tiles. For example, thebulk tile renderer104 can generate a bulk tile version for a set of bulk rendered tiles, such as “123,” and assign the bulk tile version identifier to the corresponding set of bulk rendered tiles. Each time thebulk tile renderer104 renders the map tiles for a map in bulk, thebulk tile renderer104 assigns a new bulk tile version identifier to the new instance of the set of bulk rendered tiles, such as by incrementing the previous bulk version identifier of “123” to “124.” Theindividual tile renderer114 can generate individual tile versions for the map tiles that are rerendered in response to theupdate110 to the map features. The bulk tile version identifiers and individual tile version identifiers uniquely identify instances of the map tiles.
In some implementations, theindividual tile renderer114 includes the bulk tile version, from which the rerendered tiles are based, in the individual tile version. For example, theindividual tile renderer114 can generate an individual tile version that includes the bulk tile version identifier (e.g., “123”) and an additional individual tile version identifier (e.g., “0000076”), such as “123000076.” The additional portion of the individual tile version identifier may indicate a particular change to the corresponding rerendered tiles measured relative to the bulk version of the tiles. For example, theindividual tile renderer114 may use “76” to indicate that seventy-six changes have been made to the corresponding tiles since bulk tile version “123” or that the corresponding tiles were rerendered during a seventy-sixth time interval after bulk tile version “123.”
Theindividual tile renderer114 may choose the number of digits allotted for the additional portion of the individual tile version number based on a frequency with which thebulk tile renderer104 renders each new set of bulk rendered tiles and a frequency with which theindividual tile renderer114 rerenders instances of individual tiles. For example, thebulk tile renderer104 may render a new set of bulk rendered tiles in a matter of days, such as about every two weeks. Theindividual tile renderer114 may rerender new instances of individual tiles in a matter of seconds, such as about ten seconds. Theindividual tile renderer114 may represent the number of ten second intervals in a two week period using six digits. In some implementations, theindividual tile renderer114 divides the number of seconds that have elapsed since the last bulk rendering by a particular number, such as ten (e.g., the frequency with which updates occur), to calculate the additional portion of the individual tile version identifier.
In some implementations, separating the bulk rendering and individual tile rendering allows thebulk tile renderer104 to perform a rendering that consumes more time than the rerendering performed by theindividual tile renderer114. For example, thebulk tile renderer104 may use a more aggressive compression algorithm than theindividual tile renderer114. In another example, thebulk tile renderer104 may analyze a larger set of tiles than theindividual tile renderer114 when arranging features within the tiles to avoid collisions between the features. In yet another example, thebulk tile renderer104 may analyze a larger set of tiles than theindividual tile renderer114 when determining how many features are to be displayed at each zoom level of the tiles (e.g., the feature density at each zoom level).
Thebulk tile renderer104 and theindividual tile renderer114 may store the instances of the bulk rendered tiles and the individually rerendered tiles together in themap tile storage102 or in separate storage systems. In some implementations, thebulk tile renderer104 and theindividual tile renderer114 store the instances of the bulk rendered tiles and/or the individually rerendered tiles in multiple storage systems, such as in storage systems that are geographically distributed around a country, a continent, or the Earth.
Thesystem100 includes amap search server116 that receives asearch query118 from acomputing device120 over a network, such as a local network or the computing devices that make up the Internet. Themap search server116 processes thesearch query118 and, in response, provides one ormore search results122 to thecomputing device120. Thesearch query118 can be for a map search system or a general search query that includes a term that themap search server116, or another system, identifies as map related. Themap search server116 identifies a location for one or more of the search results122. The location may include, for example, coordinates in a coordinate system, such as a latitude, a longitude, and a zoom level. Themap search server116 accesses themap tile storage102, or another storage, to retrieve one or morelatest tile versions124 for a portion of the map that corresponds to the identified location. Themap search server116 provides the search results122 to thecomputing device120, including instructions for requesting a set of map tiles from amap tile server126 that have thelatest tile versions124.
Thecomputing device120 receives the search results122, including thelatest tile versions124. Thelatest tile versions124 include one or more instances of the bulk tile version identifier and one or more instances of individual tile version identifiers. Thecomputing device120 processes the instructions in the search results122 and as a result, sends arequest128 to themap tile server126 for map tiles having thelatest tile versions124. In response, themap tile server126 provides one ormore map tiles130 to thecomputing device120. Themap tile server126 may retrieve the bulk and individual map tiles both from themap tile storage102 or from separate storage systems. In some implementations, multiple map tile servers access multiple corresponding map tile storage systems. Each map tile server may wait a particular amount of time, such as about five, ten, or fifteen minutes, before serving tiles from a corresponding map tile storage to allow rendered and rerendered map tiles to be distributed to the map tile storage systems from a central map tile storage, thebulk tile renderer104, and/or theindividual tile renderer114. Thecomputing device120 then receives the map tiles from themap tile server126 and uses the instructions from the search results122 to display one or more of themap tiles130.
In some implementations, thecomputing device112 that submitted theupdates110 to theapproval system108 overlays one or more temporary display objects132 that represent theupdates110 to the map tiles. Thecomputing device112 may receive one or moretile version identifiers134 from theapproval system108 for individual instances of the tiles that were rerendered as a result of theupdates110. Thecomputing device112 then sends arequest136 to themap tile server126 for the rerendered instances of the tiles using thetile version identifiers134. In response, themap tile server126 provides one or more individual rerendered instances ofmap tiles138 to thecomputing device112. Thecomputing device112 may use the individual rerendered instances ofmap tiles138 to replace existing map tiles and/or the temporary display objects132.
FIG. 2A shows an example of agraphical user interface200 for presenting updated map tiles. Thegraphical user interface200 is a web page provided by a map search service, such as themap search server116. Thegraphical user interface200 includes a map area202. The map area202 presents at least a portion of one or more map tiles204a-1 that make up a map. The map may include other map tiles that are not currently presented within the map area202, such as map tiles to the left, right, up, down, or on different zoom level than the map tiles204a-1. The dotted lines represent the full extent of each of the map tiles204a-1, but only the portion of each of the map tiles204a-1 that is within the map area202 is presented to a user in thegraphical user interface200.
Thegraphical user interface200 includes instructions from the map search server for downloading the map tiles204a-1 from a map tile server, such as themap tile server126. The instructions can include, for example, markup and/or script for web page elements, such as a hypertext markup language (HTML) <img> tag for each map tile. Each <img> tag can include a “src” attribute that identifies the network location of the corresponding map tile, such as in a uniform resource identifier (URI). Each URI may include a map tile version identifier of the corresponding map tile. In some implementations, the map tile version identifier is included in a path portion of the URI, where the URI has a format of scheme://domain:port/path?query#fragment. Alternatively, the map tile version identifier may be included in another portion of the URI.
In some implementations, data that describes a map tile version identifier can be provided separately from an element (e.g., an <img> tag) that is used to request the map tile. For example, the data can be in a separate file, such as a file in an Extensible Markup Language (XML) format, or in a portion of a file or web page in which the element is included that is separate from the element. Then, a client-side script (e.g., JavaScript) may be used to populate the element with the map tile version identifier, such as by adding the map tile version identifier to a “src” attribute of an <img> tag.
The instructions for downloading map tiles can set a cache expiration date in the HTTP header for each request to a time in the distant future, such as a time that is greater than the longest typical update for a map tile (e.g., more than about two weeks). This encourages the requesting computing device and other intermediate computing devices in the chain of communication between the map tile server and the requesting computing device to cache the requested map tiles. When a new map tile is designated for downloading to the requesting computing device, the map tile version identifier of the map tile is updated in response to rerendering the map tile. The map search server and/or the map tile server then provide the updated map tile version identifier to the requesting computing device. As a result, the updated map tile version identifier in the URI for the map tile causes the requesting computing device (and the intermediate computing devices) to download and cache the rerendered map tile again.
Other information related to the map tile to be downloaded may also be included in a portion of the URI (e.g., the path portion), such as information that identifies a zoom level of the map tile and a position of the map tile within the zoom level (e.g., in an x-y coordinate space). In addition, the URI can include an identifier for a type of tile (also referred to as a layer) to be downloaded, such as a street map tile, a topographical map tile, a satellite/aerial image tile, or a road overlay map tile. For example, the street map tiles may be designated by “layer=m@” in the URI http://map.example.com/tiles/layers=m@123000076&x=5278&y=12718&z=15. The “x,” “y,” and “z” name-value pairs include the x-y coordinates and the zoom level of the street map tile, respectively.
Themap tile server126 or another system can combine additional layer information with the street map tile. Themap tile server126 may then send the combined tile to the requesting computing device. In some implementations, themap tile server126 and/or the other server can combine the street map tile and the additional layer information prior to receiving the request for the combined tile and store the combined tile. Themap tile server126 may then retrieve the stored combined tile and send the stored combined tile to the requesting computing device.
For example, the computing device can send a request for map tiles that includes the URI http://map.example.com/tiles/layers=m@123000076,bike&x=5278&y=12718&z=15. The identifier “,bike” is appended to the individual tile version identifier to indicate that the computing device has requested that themap tile server126 provide a street map tile combined with a bike path tile.
In another example, the computing device can send a request for tiles that includes the URI http://map.example.com/tiles/layers=t@127,r@159000083&x=5278&y=12718&z=15. The bulk tile version identifier “t@127” and the individual tile version identifier “r@159000083” indicate that the computing device has requested that themap tile server126 provide a terrain or topological tile combined with a road overlay tile. The terrain tiles may be raster or bitmap graphics, while the road overlay tiles may be vector graphics with a transparent background. The transparent background allows each terrain tile to show through a corresponding overlay road tile. In some implementations, thesystem100 uses only bulk version identifiers to identify terrain tiles for download to thecomputing device120.
Themap search server116 and/or themap tile server126 can provide instructions to thecomputing device120 to overlay at least one tile on top of another tile. Thecomputing device120 then receives the overlay tile and the other tile, and uses the instructions to present the overlay tile on top of the other tile. Thecomputing device120 then presents the combination of the overlay tile and the other tile in thegraphical user interface200 as one of the map tiles204a-1. For example, thecomputing device120 can send a first request for a particular individual version identifier of a road overlay tile using the URI http://map.example.com/tiles/layers=h@162000054&x=5278&y=12718&z=15. Thecomputing device120 can send a second request for a particular bulk version identifier of a satellite or aerial image tile using the URI http://map.example.com/tiles/layers=v@102&x=5278&y=12718&z=15. The tiles may have the same x, y, and z values corresponding to the same location within the map. The satellite image tiles may be raster or bitmap graphics, while the road overlay tiles may be vector graphics with a transparent background. Again, the transparent background allows each satellite image tile to show through a corresponding overlay road tile. In some implementations, thesystem100 uses only bulk version identifiers to identify satellite image tiles for download to thecomputing device120.
Thesystem100 may distribute the map tiles across multiple map tile servers having domain names such as “map1.example.com” and “map2.example.com.” Themap search server116 and/or themap tile server126 may then provide the domain name of a particular map tile server, for example, to provide for load balancing in thesystem100 and/or a shorter network path to the particular map tile server than themap tile server126. In some implementations, thesystem100 includes separate map tile servers for one or more of the layers. For example, thesystem100 may store the satellite image tiles at a first map tile server or set of map tile servers, and the road overlay tiles at a second map tile server or set of map tile servers.
Thegraphical user interface200 includes controls that allow a user to interact with the map area202. For example, thegraphical user interface200 may include asearch control206 that can receive a search query input from a user, such as the search query “Sunnydale, Calif.” Thegraphical user interface200 provides the search query to themap search server116. Themap search server116 determines that the search query includes a city of “Sunnydale” and a state of “CA” or “California.” Themap search server116 and/or themap tile server126 identify the version identifiers for the map tiles around the identified location and provides the version identifiers to thecomputing device120. Thecomputing device120 then sends one or more requests to themap tile server126 for the map tiles having the version identifiers.
Thegraphical user interface200 also includes apan control208 and azoom level control210. A user can make an input using thepan control208 or another type of input, such as with arrow keys on a keyboard or by clicking and dragging the map area202 with a pointing device, to pan to the map area202 to the left, right, up, or down. A user can make an input using thezoom level control210 or another type of input, such as by double clicking on the map area202 with a pointing device, to zoom to another zoom level in the map area202. Thegraphical user interface200 includes instructions that receive the inputs and pans or zooms the map area202 to a new position or zoom level within the map. In response, thegraphical user interface200 sends a request to themap tile server126 for additional tiles that are located at the new position and/or zoom level.
In some implementations, the instructions retrieve map tiles around a currently displayed set of map tiles prior to receiving an input requesting that the map area202 be panned to that surrounding area. For example, a map search server and/or a map tile server can provide thegraphical user interface200 with instructions to download map tiles outside the map area202 in addition to the map tiles204a-1 displayed in the map area202. Accordingly, the map search server and/or the map tile server provides map tile version identifiers in the instructions for thegraphical user interface200.
FIG. 2B shows an example of agraphical user interface250 for updating map tiles. Thegraphical user interface250 is a web page provided by a map search service, such as themap search server116 shown inFIG. 1. Thegraphical user interface250 includes amap area252. Themap area252 presents at least a portion of one or more map tiles254a-1 that make up a map, such as a same map as is presented in thegraphical user interface200 ofFIG. 2A. The dotted lines represent the full extent of each of the map tiles254a-1, but only the portion of each of the map tiles254a-1 that is within themap area252 is presented to a user in thegraphical user interface250. Like thegraphical user interface200 ofFIG. 2A, thegraphical user interface250 includes instructions for downloading the map tiles254a-1 from a map tile server, such as themap tile server126. Thegraphical user interface250 may receive the instructions for downloading the map tiles254a-1 from theapproval system108.
Thegraphical user interface250 also includes instructions for displaying the temporary display objects132, shown inFIG. 1. Thegraphical user interface250 may receive the instructions from theapproval system108. The instructions direct thegraphical user interface250 to receive user inputs that include updates to features in geospatial information that describes the map. The instructions also direct thegraphical user interface250 to overlay one or more temporary display objects on the map that represent the updates to the features. For example, thegraphical user interface250 can place multiple line segments256a-bon the map in response to user inputs received by apointer258. In particular, thegraphical user interface250 can receive user inputs made with thepointer258 that specify multiple vertexes260a-bof the line segments256a-b. The line segments256a-brepresent updates to a feature, such as a road, in geospatial information that describes the map. The user inputs may also include other information about the feature, such as the type of road, the name of the road, and directions of traffic flow on the road. Thegraphical user interface250 may also receive updates to other types of features, such as other types of linear features (e.g., a bicycle path), polygons (e.g., a park boundary), or place markers (e.g., a business).
In addition to overlaying the line segments256a-bon the map for the updates, thegraphical user interface250 sends the updates to an approval system, such as theupdates110 sent by thecomputing device112 to theapproval system108. Theapproval system108 reviews the updates and, if approved, the updates are used to rerender one or more tiles from the map. Theapproval system108 or another part of thesystem100, such as themap tile server126, provides thecomputing device112 with one or more individual tile version identifiers and instructions for replacing the line segments256a-b, themap tile254f, and the map tile254jwith the individually rerendered map tiles.
Thecomputing device112 includes the individual tile version identifiers in therequest136 to themap tile server126 for the individually rerendered map tiles. Themap tile server126 provides the individual rerendered instances ofmap tiles138 to thecomputing device112 in response to therequest136. Thecomputing device112 then uses the individual rerendered instances ofmap tiles138 to replace the corresponding temporary display objects that represented the updates in the individual rerendered instances ofmap tiles138. For example, thegraphical user interface250 may replace the line segments256a-b, themap tile254f, and the map tile254jwith themap tile204fand the map tile204jofFIG. 2A.
FIG. 3A is flow chart that shows an example of a process300 for managing updates to map tiles. The process300 may be performed, for example, by a system such as thesystem100, thegraphical user interface200, and thegraphical user interface250. For clarity of presentation, the description that follows uses thesystem100, thegraphical user interface200, and thegraphical user interface250 as examples for describing the process300. However, another system, or combination of systems, may be used to perform the process300.
Atstep302, if a bulk rendering is not scheduled to occur, then the process300 proceeds to step310. For example, thebulk tile renderer104 may schedule a bulk rendering of map tiles every few days or weeks. In another example, thebulk tile renderer104 may schedule a next bulk rendering of the map tiles in response to completing a previous bulk rendering. Atstep302, if a bulk rendering is scheduled to occur, then, atstep304, map tiles are rendered in bulk based on geospatial information that describes a map. The rendering generates a bulk rendered instance of each of the map tiles. For example, thebulk tile renderer104 may render map tiles in bulk using the features in themap feature database106 and store the bulk rendered map tiles in themap tile storage102.
Atstep306, a bulk version identifier is generated that uniquely identifies the bulk rendered instance of each of the tiles. For example, thebulk tile renderer104 may generate the sequentially incrementing number representing the current iteration (e.g., “123”) of bulk rendered map tiles.
Atstep308, the bulk version identifier and an association between the bulk version identifier and the bulk rendered instance of each of the map tiles is stored. For example, thebulk tile renderer104 may store the bulk version identifier and an association between the bulk version identifier and the current instance of the bulk rendered map tiles in themap tile storage102.
Atstep310, if an update to a feature in the geospatial information is received, then, atstep312, at least one of the map tiles are rerendered based on the update to generate an individual rerendered instance of the map tile. The tile represents a portion of the map affected by the update to the feature in the geospatial information. For example, theindividual tile renderer114 may rerender one or more of the current instance of the bulk rerendered map tiles based on the updates to the features in themap feature database106.
Atstep314, a tile version identifier is generated that uniquely identifies the individual rerendered instance of the tile. The tile version identifier may be generated relative to the bulk version identifier that was generated prior to generating the tile version identifier. For example, theindividual tile renderer114 may generate a tile version identifier of “123000076” for the rerendered instance of the map tile, where the “123” portion represents the bulk version from which the individual instance is rendered and the “000076” portion is the individual tile version relative to the bulk version.
At step316, the tile version identifier and an association between the tile version identifier and the individual rerendered instance of the map tile are stored. For example, theindividual tile renderer114 may store the tile version identifier and an association between the tile version identifier and the individual rerendered instance of the map tile in themap tile storage102.
Atstep318, each of the bulk rendered tiles and the individual rerendered instance of the tile are combined with corresponding ones of another set of map tiles and are stored. For example, themap tile server126 may combine each of the road map tiles with a corresponding one of the bike trail tiles.
Atstep320, the bulk rendered tiles, the individual rerendered instance of the tile, and the combined tiles are distributed to map tile servers. For example, thesystem100 may distribute the road map tiles (including bulk rendered tiles and one or more individual rerendered tiles) and the road map tiles combined with the bike trail tiles to multiple map tile servers or multiple map tile storage systems that are accessible by the map tile servers.
FIG. 3B is flow chart that shows an example of a process330 for accessing map tiles. The process330 may be performed, for example, by a system such as thesystem100, thegraphical user interface200, and thegraphical user interface250. For clarity of presentation, the description that follows uses thesystem100, thegraphical user interface200, and thegraphical user interface250 as examples for describing the process330. However, another system, or combination of systems, may be used to perform the process330.
Atstep332, a computing device sends a request to provide at least a portion of a map for display within a viewing area of a user interface at the computing device. For example, thecomputing device120 can send a general search query with location related terms or a location search query to themap search server116.
Atstep334, the request to provide the portion of the map is received and map tiles for the portion of the map are identified. For example, themap search server116 may receive the search query. Themap search server116 performs a search using the search query that identifies a location within the map and, correspondingly, map tiles at the location.
Atstep336, one or more tile version identifiers and instructions for using the tile version identifiers to send one or more requests for individual rerendered instances of one or more of the map tiles are provided to the computing device. One or more bulk version identifiers and instructions for using the bulk version identifiers to send one or more requests for bulk rendered instances of one or more of the map tiles may also provided to the computing device. For example, themap search server116 can provide a tile version identifier of “m@12300076” for an individually rerendered instance of a first map tile and a bulk version identifier of “m@123000000” for a bulk rendered instance of a second map tile.
In some implementations, the process330 may include providing, to the computing device, additional tile and/or bulk version identifiers for one or more of the tiles around the tile and outside of the viewing area of the user interface at the computing device. The process330 may also include providing instructions for using the additional tile and/or bulk version identifiers to send requests for the one or more of the tiles around the tile, such as when the user pans or zooms to a new portion of the map.
In some implementations, the process330 may include providing multiple individual and/or bulk version identifiers for each location, such as when the request for the portion of the map requests multiple types or layers of map information. For example, thecomputing device120 may send a request for both street map and bicycle path information, or satellite images and roads to be displayed together. Accordingly, themap search server116 may provide individual and/or bulk tile version identifiers for each set of map information (e.g., version identifiers for street map tiles and for bicycle path tiles, or version identifiers for satellite image tiles and for road tiles).
Atstep338, the computing device sends one or more requests for map tiles using the received tile version identifiers. Atstep340, the requests for the map tiles are received. The request may also include tile version identifiers for one or more other tiles from one or more other maps. For example, themap tile server126 can receive requests that include version identifiers for street map tiles, for street map tiles and bicycle path tiles, or for satellite image tiles and road tiles. In some implementations, one or more types or layers of tiles may be served by another system. For example, a system dedicated to serving satellite image tiles may the satellite image tiles for the requests to display satellite image tiles and road tiles together, while themap tile server126 serves the road tiles for the requests.
Atstep342, it is determined whether at least a threshold amount of time has passed after the generation of one or more individual rerendered instances of tiles that are being requested by the computing device. If the threshold amount of time has not passed, then, atstep344, the requested individual rerendered instances of the tiles are provided to the computing device. Otherwise, if the threshold amount of time has passed, then, atstep346, corresponding bulk rendered instances of the tiles are provided to the computing device rather than the requested individual rerendered instances of the tiles. For example, themap tile server126 may provide map tiles from a most recent bulk rendering of the tiles in response to a request for individually rerendered tiles that were rendered more than the threshold amount of time, e.g., before the current time. In another example, the threshold amount of time may be the time at which the next bulk rendering of the map tiles occurs or is made available to computing devices, such as thecomputing device120.
In some implementations, the process330 may include determining whether at least a bulk threshold amount of time has passed after the generation of one or more bulk rendered instances of tiles that are being requested by the computing device. If the bulk threshold amount of time has not passed, then, the requested bulk rendered instances of the tiles are provided to the computing device. Otherwise, if the bulk threshold amount of time has passed, then, corresponding bulk rendered instances of the tiles from a most recent or current bulk rendering are provided to the computing device rather than the requested bulk rendered instances of the tiles.
Atstep348, the computing device presents the received map tiles. For example, thecomputing device120 may present the map tiles204a-1 in the map area202 of thegraphical user interface200. The instructions provided to the computing device atstep336, or another set of instructions, may include directions for displaying a combination of tiles. Each of the map tiles204a-1 in thegraphical user interface200 may be a combination of multiple tiles. For example, the request for a map tile may include multiple tile version identifiers. Accordingly, themap tile server126, may combine the map tiles for the multiple tile version identifiers and provide the combined tile to thecomputing device120, such as in the case of a road map tile combined with a bicycle path tile. In another example, the instructions from themap search server116 may include instructions that, when executed by thecomputing device120, overlay tiles with transparent backgrounds, such as street tiles, over other tiles, such as satellite image tiles. The result may be that the transparent tiles and the other tiles appear to be combined to a user of thecomputing device120.
Atstep350, the computing device receives one or more user inputs that request panning and/or zooming of the displayed map. The instructions provided to the computing device atstep336, or another set of instructions, may include directions for requesting additional map tiles that are not currently displayed within the graphical user interface at the computing device. The additional map tiles form a cache of stored map tiles at the computing device. In response to receiving the panning and/or zooming user inputs, atstep352, the computing device presents any cached map tiles that correspond to the new map location being presented with the graphical user interface after panning and/or zooming the map.
The process330 returns to step338, where the computing device sends a request for additional map tiles. The additional map tiles may include tiles for the new location being displayed that were not already in the cache and/or map tiles to be added to the cache. In some implementations, the computing device provides the new location being displayed to themap search server116 and/or themap tile server126. Themap search server116 and/or themap tile server126 then provides a list of tile version identifiers for the new location. The list may include bulk and/or individual tile version identifiers. The list may include tile version identifiers for cached map tiles. The list may also include tile version identifiers for multiple types or layers of map tiles.
FIG. 3C is flow chart that shows an example of aprocess360 for updating map tiles. Theprocess360 may be performed, for example, by a system such as thesystem100, thegraphical user interface200, and thegraphical user interface250. For clarity of presentation, the description that follows uses thesystem100, thegraphical user interface200, and thegraphical user interface250 as examples for describing theprocess360. However, another system, or combination of systems, may be used to perform theprocess360.
Atstep362, a computing device sends a request to a map tile approval and/or renderer system to display and edit a portion of a map. For example, thecomputing device112 can send a request to theapproval system108 to display and edit a map.
Atstep364, the request to display and edit the map is received. Atstep366, tile version identifiers are provided to the computing device, as well as instructions for receiving a user input that includes an update to a feature in geospatial information that describes a map and for overlaying a temporary display object on the map that represents the update to the feature in response to receiving the user input. For example, theapproval system108 may provide the tile version identifiers and the instructions to thecomputing device112.
Atstep368, the computing device sends one or more requests for instances of map tiles to a map tile server using the tile version identifiers. Atstep370, the map tile server receives the requests and in response, atstep372, provides the requested instances of the map tiles to the computing device. Atstep374, the computing device presents the instances of the map tiles. For example, thecomputing device112 may present the map tiles254a-1 in thegraphical user interface250.
Atstep376, the computing device receives one or more user inputs representing an update to a feature in geospatial information for the map. Updating a feature may include an action, such as adding a new feature, removing an existing feature, or modifying an existing feature. For example, thecomputing device112 may receive user inputs in themap area252 with thepointer258 that add a new road to the geospatial information. In response to receiving the user inputs, the computing device uses the instructions to present one or more temporary display objects that represent the update to the feature in the geospatial information. In addition, the computing device uses the instructions to provide the update to the approval and/or renderer system.
Atstep378, the update to the feature is received. Atstep380, if the update to the feature is approved, then, atstep382, at least one tile from the tiles is rerendered based on the update to generate an individual rerendered instance of the tile. The tile represents a portion of the map affected by the update to the feature in the geospatial information. For example, theapproval system108 may approve theupdate110 and store theupdate110 in themap feature database106. Theindividual tile renderer114 then rerenders the tiles affected by theupdate110, such as themap tile254fand the map tile254j.
Atstep384, a tile version identifier is generated that uniquely identifies the individual rerendered instance of the tile. For example, theindividual tile renderer114 may generate an individual tile version identifier for the individual rerendered instances of themap tile254fand the map tile254j.
Atstep386, the tile version identifier and an association between the tile version identifier and the individual rerendered instance of the tile are stored in a data storage. For example, theindividual tile renderer114 may store the individual rerendered instances of themap tile254fand the map tile254jand the association with the individual tile version identifier in themap tile storage102.
Atstep388, the tile version identifier and instructions for using the tile version identifier to send a request for the individual rerendered instance of the tile and to replace the temporary display object with the individual rerendered instance of the tile are provided to the computing device. For example, theapproval system108 can provide the individual tile version identifier to thecomputing device112 as well as the instructions for replacing the line segments256a-b, themap tile254f, and the map tile254jwith corresponding ones of themap tile204fand the map tile204j. The instructions for using a tile version identifier to replace the temporary display object and the updated map tiles may be provided, for example, instep388 or instep366.
Atstep390, the computing device sends a request for the individual rerendered instance of the tile using the tile version identifier. Atstep370, the request for the individual rerendered instance of the tile is received and, atstep372, the individual rerendered instance of the tile is provided to the computing device. Atstep374, the computing device receives the individual rerendered instance of the tile and presents the individual rerendered instance of the tile, including replacing the temporary display object and the existing map tile that corresponds to the individual rerendered instance of the tile.
FIG. 4 is a schematic diagram that shows an example of a computing device400 and an example of a mobile computing device that can be used to implement the systems and techniques described here. The computing device400 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The mobile computing device is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smartphones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
The computing device400 includes aprocessor402, amemory404, astorage device406, a high-speed interface408 connecting to thememory404 and multiple high-speed expansion ports410, and a low-speed interface412 connecting to a low-speed expansion port414 and thestorage device406. Each of theprocessor402, thememory404, thestorage device406, the high-speed interface408, the high-speed expansion ports410, and the low-speed interface412, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. Theprocessor402 can process instructions for execution within the computing device400, including instructions stored in thememory404 or on thestorage device406 to display graphical information for a GUI on an external input/output device, such as adisplay416 coupled to the high-speed interface408. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
Thememory404 stores information within the computing device400. In some implementations, thememory404 is a volatile memory unit or units. In some implementations, thememory404 is a non-volatile memory unit or units. Thememory404 may also be another form of computer-readable medium, such as a magnetic or optical disk.
Thestorage device406 is capable of providing mass storage for the computing device400. In some implementations, thestorage device406 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
A computer program product can be tangibly embodied in an information carrier. The computer program product may contain instructions that, when executed, perform one or more methods, such as those described above. The computer program product can also be tangibly embodied in a computer- or machine-readable medium, such as thememory404, thestorage device406, or memory on theprocessor402.
The high-speed interface408 manages bandwidth-intensive operations for the computing device400, while the low-speed interface412 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In some implementations, the high-speed interface408 is coupled to thememory404, the display416 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports410, which may accept various expansion cards (not shown). In the implementation, the low-speed interface412 is coupled to thestorage device406 and the low-speed expansion port414. The low-speed expansion port414, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
The computing device400 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as astandard server418, or multiple times in a group of such servers. In addition, it may be implemented in a personal computer such as alaptop computer420. It may also be implemented as part of arack server system422. Alternatively, components from the computing device400 may be combined with other components in a mobile device (not shown), such as amobile computing device450. Each of such devices may contain one or more of the computing device400 and themobile computing device450, and an entire system may be made up of multiple computing devices communicating with each other.
Themobile computing device450 includes aprocessor452, amemory464, an input/output device such as adisplay454, acommunication interface466, and atransceiver468, among other components. Themobile computing device450 may also be provided with a storage device, such as a micro-drive or other device, to provide additional storage. Each of theprocessor452, thememory464, thedisplay454, thecommunication interface466, and thetransceiver468, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
Theprocessor452 can execute instructions within themobile computing device450, including instructions stored in thememory464. Theprocessor452 may be implemented as a chipset of chips that include separate and multiple analog and digital processors. Theprocessor452 may provide, for example, for coordination of the other components of themobile computing device450, such as control of user interfaces, applications run by themobile computing device450, and wireless communication by themobile computing device450.
Theprocessor452 may communicate with a user through acontrol interface458 and adisplay interface456 coupled to thedisplay454. Thedisplay454 may be, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display) display or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. Thedisplay interface456 may comprise appropriate circuitry for driving thedisplay454 to present graphical and other information to a user. Thecontrol interface458 may receive commands from a user and convert them for submission to theprocessor452. In addition, anexternal interface462 may provide communication with theprocessor452, so as to enable near area communication of themobile computing device450 with other devices. Theexternal interface462 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
Thememory464 stores information within themobile computing device450. Thememory464 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Thememory464 may include, for example, flash memory and/or NVRAM memory (non-volatile random access memory).
Anexpansion memory474 may also be provided and connected to themobile computing device450 through anexpansion interface472, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Theexpansion memory474 may provide extra storage space for themobile computing device450, or may also store applications or other information for themobile computing device450. Specifically, theexpansion memory474 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, theexpansion memory474 may be provide as a security module for themobile computing device450, and may be programmed with instructions that permit secure use of themobile computing device450. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a secure manner.
In some implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The computer program product can be a computer- or machine-readable medium, such as thememory464, theexpansion memory474, or memory on theprocessor452. In some implementations, the computer program product can be received in a propagated signal, for example, over thetransceiver468 or theexternal interface462.
Themobile computing device450 may communicate wirelessly through thecommunication interface466, which may include digital signal processing circuitry where necessary. Thecommunication interface466 may provide for communications under various modes or protocols, such as GSM voice calls (Global System for Mobile communications), SMS (Short Message Service), EMS (Enhanced Messaging Service), or MMS messaging (Multimedia Messaging Service), CDMA (code division multiple access), TDMA (time division multiple access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000, or GPRS (General Packet Radio Service), among others. Such communication may occur, for example, through thetransceiver468 using a radio-frequency. In addition, short-range communication may occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, a GPS (Global Positioning System)receiver module470 may provide additional navigation- and location-related wireless data to themobile computing device450, which may be used as appropriate by applications running on themobile computing device450.
Themobile computing device450 may also communicate audibly using anaudio codec460, which may receive spoken information from a user and convert it to usable digital information. Theaudio codec460 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of themobile computing device450. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on themobile computing device450.
Themobile computing device450 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as acellular telephone480. It may also be implemented as part of asmartphone482, personal digital assistant, or other similar mobile device.
Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms machine-readable medium and computer-readable medium refer to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term machine-readable signal refers to any signal used to provide machine instructions and/or data to a programmable processor.
To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Although a few implementations have been described in detail above, other modifications are possible. For example, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.

Claims (14)

What is claimed is:
1. A computer-implemented method for accessing map tiles, the method comprising:
receiving, by one or more computing devices, a first request from a computing device for a portion of a map, wherein the portion of the map includes combined map tiles that are a combination of corresponding ones of first map tiles from a first type of map and second map tiles from a second type of map, and wherein the first map tiles from the first type of map include bulk rendered map tiles and one or more individual rerendered map tiles, the one or more individual rerendered map tiles comprising one or more corresponding bulk rendered map tiles modified based on map feature updates;
providing, by the one or more computing devices, first tile version identifiers and second tile version identifiers to the computing device in response to receiving the first request, wherein each of the first tile version identifiers uniquely identifies an instance of one of the first map tiles and each of the second tile version identifiers uniquely identifies an instance of one of the second map tiles;
providing, by the one or more computing devices, instructions to the computing device for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles;
receiving, by the one or more computing devices, one or more second requests from the computing device for the combined map tiles using the first tile version identifiers and the second tile version identifiers;
providing, by the one or more computing devices, the combined map tiles to the computing device in response to receiving the second requests;
combining, by the one or more computing devices, the corresponding ones of the first map tiles and the second map tiles to generate the combined map tiles; and
determining, by the one or more computing devices, that at least a threshold amount of time has passed after generating the individual rerendered map tiles;
wherein combining the corresponding ones of the first map tiles and the second map tiles comprises combining one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed.
2. The method ofclaim 1, wherein the first tile version identifiers each include a bulk tile version identifier and an individual tile version identifier.
3. The method ofclaim 1, wherein providing the instructions for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles comprises providing instructions to include the first tile version identifiers and the second tile version identifiers in corresponding path portions of web addresses in the second requests.
4. The method ofclaim 1, further comprising providing instructions to the computing device for displaying the combination of the corresponding ones of the first map tiles and the second map tiles.
5. The method ofclaim 4, further comprising:
determining that at least a threshold amount of time has passed after generating the individual rerendered map tiles; and
wherein providing the instructions for displaying the combination of the corresponding ones of the first map tiles with the second map tiles comprises providing instructions for displaying the combination of one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed.
6. The method ofclaim 1, further comprising providing additional first tile version identifiers of the first map tiles and additional second tile version identifiers of the second map tiles to the computing device for one or more additional combined map tiles around the combined map tiles and instructions for using the additional first tile version identifiers and the additional second tile version identifiers to request the additional combined map tiles.
7. The method ofclaim 1, further comprising distributing the first map tiles and the second map tiles to multiple map tile servers.
8. A computer-implemented system for accessing map tiles, the system comprising:
one or more data storages that store combined map tiles that are a combination of corresponding ones of first map tiles from a first type of map and second map tiles from a second type of map, and wherein the first map tiles from the first type of map include bulk rendered map tiles and one or more individual rerendered map tiles, the one or more individual rerendered map tiles comprising one or more corresponding bulk rendered map tiles modified based on map feature updates;
a first interface that receives a first request from a computing device for a portion of a map that includes the combined map tiles;
a map server that provides first tile version identifiers and second tile version identifiers to the computing device in response to receiving the first request, and provides instructions to the computing device for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles, wherein each of the first tile version identifiers uniquely identifies an instance of one of the first map tiles and each of the second tile version identifiers uniquely identifies an instance of one of the second map tiles;
a second interface that receives one or more second requests from the computing device for the combined map tiles using the first tile version identifiers and the second tile version identifiers;
a map tile server that provides the combined map tiles to the computing device in response to receiving the second requests; and
a tile renderer that combines the corresponding ones of the first map tiles and the second map tiles to generate the combined map tiles;
wherein the tile renderer determines that at least a threshold amount of time has passed after generating the individual rerendered map tiles, and combines one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed.
9. The system ofclaim 8, wherein the first tile version identifiers each include a bulk tile version identifier and an individual tile version identifier.
10. The system ofclaim 1, wherein the map server provides instructions to include the first tile version identifiers and the second tile version identifiers in corresponding path portions of web addresses in the second requests.
11. The system ofclaim 8, wherein the map server provides instructions to the computing device for displaying the combination of the corresponding ones of the first map tiles and the second map tiles.
12. The system ofclaim 11, wherein the map server determines that at least a threshold amount of time has passed after generating the individual rerendered map tiles, and provides instructions for displaying the combination of one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed.
13. The system ofclaim 8, further comprising:
multiple map tile servers that provide the combined map tiles to the computing device in response to receiving one or more second requests for the combined map tiles using the first tile version identifiers and the second tile version identifiers; and
a tile renderer that distributes the first map tiles and the second map tiles to the map tile servers.
14. A non-transitory computer-readable medium storing instructions that when executed cause a computer to perform operations, the operations comprising:
receiving a first request from a computing device for a portion of a map, wherein the portion of the map includes combined map tiles that are a combination of corresponding ones of first map tiles from a first type of map and second map tiles from a second type of map, and wherein the first map tiles from the first type of map include bulk rendered map tiles and one or more individual rerendered map tiles, the one or more individual rerendered map tiles comprising one or more corresponding bulk rendered map tiles modified based on map feature updates;
providing first tile version identifiers and second tile version identifiers to the computing device in response to receiving the first request, wherein each of the first tile version identifiers uniquely identifies an instance of one of the first map tiles and each of the second tile version identifiers uniquely identifies an instance of one of the second map tiles;
providing instructions to the computing device for using the first tile version identifiers and the second tile version identifiers to request the combined map tiles;
receiving one or more second requests from the computing device for the combined map tiles using the first tile version identifiers and the second tile version identifiers;
providing the combined map tiles to the computing device in response to receiving the second requests;
combining the corresponding ones of the first map tiles and the second map tiles to generate the combined map tiles; and
determining that at least a threshold amount of time has passed after generating the individual rerendered map tiles;
wherein combining the corresponding ones of the first map tiles and the second map tiles comprises combining one or more corresponding ones of the bulk rendered map tiles rather than the individual rerendered map tiles with the second map tiles in response to determining that the threshold amount of time has passed.
US13/761,0262012-02-102013-02-06Accessing map tilesActive2033-06-09US9202311B2 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US13/761,026US9202311B2 (en)2012-02-102013-02-06Accessing map tiles

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
US201261597689P2012-02-102012-02-10
US13/761,026US9202311B2 (en)2012-02-102013-02-06Accessing map tiles

Publications (2)

Publication NumberPublication Date
US20150170387A1 US20150170387A1 (en)2015-06-18
US9202311B2true US9202311B2 (en)2015-12-01

Family

ID=53369106

Family Applications (1)

Application NumberTitlePriority DateFiling Date
US13/761,026Active2033-06-09US9202311B2 (en)2012-02-102013-02-06Accessing map tiles

Country Status (1)

CountryLink
US (1)US9202311B2 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US10410398B2 (en)*2015-02-202019-09-10Qualcomm IncorporatedSystems and methods for reducing memory bandwidth using low quality tiles
US10002156B2 (en)*2015-03-162018-06-19Here Global B.V.Version management for incrementally compiled map data
US9671236B2 (en)*2015-10-292017-06-06Here Global B.V.Tile versioning to improve usability of streamed navigation data
US9863774B2 (en)2016-05-062018-01-09Here Global B.V.Stitching mixed-version map tiles in hybrid navigation for partial map updates
US10378909B2 (en)2016-05-062019-08-13Here Global B.V.Stitching mixed-version map tiles in hybrid navigation for partial map updates
US20180181576A1 (en)*2016-12-222018-06-28Mapbox, Inc.Real-Time Transmittal Of Optimized Map Vector Tile Data
US20180276880A1 (en)*2017-03-212018-09-27EarthX, Inc.System and method for rendering geospatial maps
US20230366700A1 (en)*2022-05-102023-11-16Apple Inc.Overlay rendering using a hardware-accelerated framework for memory sharing and overlay based map adjusting
US20240420065A1 (en)*2023-06-192024-12-19Othersphere Systems Inc.Determining infrastructure locations using geographic tiling

Citations (15)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20070233367A1 (en)*2006-03-312007-10-04Geospot, Inc.Methods for Interaction, Sharing, and Exploration over Geographical Locations
US20070229524A1 (en)*2006-02-132007-10-04Geoffrey HendreyDraggable maps
US20100321399A1 (en)*2009-06-182010-12-23Patrik EllrenMaps from Sparse Geospatial Data Tiles
US20110131376A1 (en)*2009-11-302011-06-02Nokia CorporationMethod and apparatus for tile mapping techniques
US7965902B1 (en)*2006-05-192011-06-21Google Inc.Large-scale image processing using mass parallelization techniques
US20130147842A1 (en)*2011-12-122013-06-13Google Inc.Systems and methods for temporary display of map data stored in a display device high speed memory
US20130321401A1 (en)*2012-06-052013-12-05Apple Inc.Virtual Camera for 3D Maps
US20130321400A1 (en)*2012-06-052013-12-05Apple Inc.3D Map Views for 3D Maps
US20130328871A1 (en)*2012-06-062013-12-12Apple Inc.Non-static 3d map views
US20130328862A1 (en)*2012-06-062013-12-12Apple Inc.Geospatial representation of data-less map areas
US20130346855A1 (en)*2012-06-222013-12-26Google Inc.Providing differentiated display of a map feature
US8681176B1 (en)*2011-09-202014-03-25Google Inc.Rendering a map using style identifiers
US8711181B1 (en)*2011-11-162014-04-29Google Inc.Pre-fetching map data using variable map tile radius
US8731823B2 (en)*2010-09-292014-05-20Ford Global Technologies, Inc.Advanced map information delivery, processing and updating
US8937627B1 (en)*2012-03-282015-01-20Google Inc.Seamless vector map tiles across multiple zoom levels

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20070229524A1 (en)*2006-02-132007-10-04Geoffrey HendreyDraggable maps
US20070233367A1 (en)*2006-03-312007-10-04Geospot, Inc.Methods for Interaction, Sharing, and Exploration over Geographical Locations
US8660386B1 (en)*2006-05-192014-02-25Google Inc.Large-scale image processing using mass parallelization techniques
US7965902B1 (en)*2006-05-192011-06-21Google Inc.Large-scale image processing using mass parallelization techniques
US8270741B1 (en)*2006-05-192012-09-18Google Inc.Large-scale image processing using mass parallelization techniques
US8346016B1 (en)*2006-05-192013-01-01Google Inc.Large-scale image processing using mass parallelization techniques
US20100321399A1 (en)*2009-06-182010-12-23Patrik EllrenMaps from Sparse Geospatial Data Tiles
US20110131376A1 (en)*2009-11-302011-06-02Nokia CorporationMethod and apparatus for tile mapping techniques
US8731823B2 (en)*2010-09-292014-05-20Ford Global Technologies, Inc.Advanced map information delivery, processing and updating
US8681176B1 (en)*2011-09-202014-03-25Google Inc.Rendering a map using style identifiers
US8711181B1 (en)*2011-11-162014-04-29Google Inc.Pre-fetching map data using variable map tile radius
US20130147842A1 (en)*2011-12-122013-06-13Google Inc.Systems and methods for temporary display of map data stored in a display device high speed memory
US8937627B1 (en)*2012-03-282015-01-20Google Inc.Seamless vector map tiles across multiple zoom levels
US20130321401A1 (en)*2012-06-052013-12-05Apple Inc.Virtual Camera for 3D Maps
US20130321400A1 (en)*2012-06-052013-12-05Apple Inc.3D Map Views for 3D Maps
US20130328862A1 (en)*2012-06-062013-12-12Apple Inc.Geospatial representation of data-less map areas
US20130328871A1 (en)*2012-06-062013-12-12Apple Inc.Non-static 3d map views
US20130346855A1 (en)*2012-06-222013-12-26Google Inc.Providing differentiated display of a map feature

Also Published As

Publication numberPublication date
US20150170387A1 (en)2015-06-18

Similar Documents

PublicationPublication DateTitle
US9123178B2 (en)Updating map tiles
US20150170386A1 (en)Managing updates to map tiles
US9202311B2 (en)Accessing map tiles
US9788161B1 (en)Dynamic geohash-based geofencing
US10533871B2 (en)Rendering a map using style identifiers
AU2012316660B2 (en)Map tile data pre-fetching based on mobile device generated event analysis
US9392416B2 (en)Method and apparatus for predicting and pre-fetching location information
AU2012316226B2 (en)Managing map elements using aggregate feature identifiers
US8589075B1 (en)Method, system, and computer program product for visualizing trip progress
US10817561B2 (en)System for providing imaging satellite opportunity notification on a mobile device
US8738284B1 (en)Method, system, and computer program product for dynamically rendering transit maps
CN106484693B (en)Map-indication method, picture block storage method and picture display terminal
US20190041230A1 (en)Dynamically Controlling Map Viewport in View of User Signals
US9197713B2 (en)Method and apparatus for pre-fetching remote resources for subsequent display on a mobile computing device
CN105260466A (en)Picture pushing method and apparatus
JP2018513441A (en) Determination of region to be superimposed, image superimposition, image display method and apparatus
Garcia Martin et al.An OLS regression model for context-aware tile prefetching in a web map cache
US20150130817A1 (en)Generating a sidebar from vector tiles
US10147126B2 (en)Machine to generate a self-updating message
CN110046210B (en)Map information updating method and device, electronic equipment and storage medium
CN105915563A (en)Information release system and method based on electronic map
US20180181576A1 (en)Real-Time Transmittal Of Optimized Map Vector Tile Data
US10108882B1 (en)Method to post and access information onto a map through pictures
CN106560801A (en)Dynamic webpage and flash electronic map interaction technology and management

Legal Events

DateCodeTitleDescription
ASAssignment

Owner name:GOOGLE INC., CALIFORNIA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHAWATHE, YATIN DILIP;ZYSKOWSKI, JAMIE;MESSMER, PAUL;AND OTHERS;SIGNING DATES FROM 20121224 TO 20130201;REEL/FRAME:029908/0706

STCFInformation on status: patent grant

Free format text:PATENTED CASE

ASAssignment

Owner name:GOOGLE LLC, CALIFORNIA

Free format text:CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044334/0466

Effective date:20170929

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment:4

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment:8


[8]ページ先頭

©2009-2025 Movatter.jp