You are on page 1of 46

USOO7894.

984B2

(12) United States Patent (10) Patent No.: US 7,894.984 B2


Rasmussen et al. (45) Date of Patent: *Feb. 22, 2011

(54) DIGITAL MAPPING SYSTEM (58) Field of Classification Search ......... 701/200 213;
34O7995.1 995.14
(75) Inventors: Jens Eilstrup Rasmussen, San See application file for complete search history.
Francisco, CA (US); Lars Eilstrup (56) References Cited
Rasmussen, Fairlight (AU); Bret Steven
Taylor, Los Gatos, CA (US); James U.S. PATENT DOCUMENTS
Christopher Norris, Mountain View, 4,972,319 A 11/1990 Delorme
CA (US); Stephen Ma, Kingsford (AU);
Andrew Robert Kirmse, Emerald Hills, (Continued)
CA (US); Noel Phillip Gordon, Hunters FOREIGN PATENT DOCUMENTS
Hills (AU); Seth Michael LaForge, CA 2169421 11, 1996
Seattle, WA (US)
(Continued)
(73) Assignee: Google Inc., Mountain View, CA (US) OTHER PUBLICATIONS
(*) Notice: Subject to any disclaimer, the term of this Notice of Grounds for Rejection, Japanese Patent Application No.
patent is extended or adjusted under 35 P2007-505107, May 18, 2010, 6 Pages.
U.S.C. 154(b) by 0 days. (Continued)
This patent is Subject to a terminal dis Primary Examiner Richard M. Camby
claimer. (74) Attorney, Agent, or Firm Fenwick & West LLP
(21) Appl. No.: 12/766,077 (57) ABSTRACT

(22) Filed: Apr. 23, 2010 Various methods, systems, and apparatus for implementing
aspects of a digital mapping system are disclosed. One Such
(65) Prior Publication Data method includes sending a location request from a client-side
computing device to a map tile server, receiving a set of map
US 2010/O2O1707 A1 Aug. 12, 2010 tiles in response to the location request, assembling said
received map tiles into a tile grid, aligning the tile grid relative
Related U.S. Application Data to a clipping shape, and displaying the result as a map image.
(60) Division of application No. 12/127,815, filed on May One apparatus according to aspects of the present invention
27, 2008, which is a continuation of application No. includes means for sending a location request from a client
11/567,054, filed on Dec. 5, 2006, now Pat. No. 7,379, side computing device to a map tile server, means for receiv
ing a set of map tiles in response to the location request,
811, which is a continuation of application No. 11/051, means for assembling said received map tiles into a tile grid,
534, filed on Feb. 5, 2005, now Pat. No. 7,158,878. means for aligning the tile grid relative to a clipping shape,
(60) Provisional application No. 60/567.946, filed on May and means for displaying the result as a map image. Such an
3, 2004, provisional application No. 60/555,501, filed apparatus may further include direction control or Zoom con
on Mar. 23, 2004. trol objects as interactive overlays on the displayed map
image, and may also include route or location overlays on the
(51) Int. Cl. map image.
GOIC 2L/30 (2006.01)
(52) U.S. Cl. .................................. 701/208; 340/995.14 10 Claims, 30 Drawing Sheets
Eas
Client Recci
Locatiot Cathdidate 1445
eterline Nextile
Rcquest
40s
Client Transmits
Lecation Candidate to
Location Sewer
45s
Ed

33S
Client.Retrieves Tile
from local Memory
US 7,894.984 B2
Page 2

U.S. PATENT DOCUMENTS JP 2003-208597 (A) T 2003


5,051,928 A 9, 1991 Gruthers OTHER PUBLICATIONS
S. A '92. pSA, et al. First Office Action of China State Intellectual Property Office, Chi
5,559,707 A * 9/1996 DeLorime et al. ............ 70200 nese Patent Application No. 200580013512.0, May 8, 2009, 11
5,613,051 A * 3/1997 Iodice et al. ... 345,428 Pages.
5,646,751 A 7, 1997 Motamed Second Office Action of China State Intellectual Property Office,
5,710,835 A 1/1998 Bradley Chinese Patent Application No. CN200580013512.0, Oct. 23, 2009,
5,802,492 A * 9/1998 DeLorime et al. ......... 455/456.5 Pages.
5,822,123 A 10, 1998 Davis et al. First Office Action of China State Intellectual Property Office, Chi
was a Patent Application No. 200580013912.1 Aug. 28, 2009, 16
5,848,373 A 12/1998 DeLorime et al. Fis pp Aug. 2S,
5,902,347 A 5, 1999 Backman et al. Supplementary European Search Report, European Patent Applica
5,910,805. A 6/1999 Hickey et al. tion No. EP 05729642.8, May 12, 2010, 5 Pages.
5,938,709 A 8, 1999 Hale et al. Examination Report for European Patent Application No. EP
6,002,809 A 12/1999 Feig et al. 05726046.5, Apr. 23, 2010, 4 Pages.
6,031,963 A 2, 2000 Kitamura et al. Supplementary European Search Report, European Patent Applica
6,098,015 A 8, 2000 Nimura et al. tion No. 05726046.5, Nov. 6, 2008, 3 pages.
6,182,010 B1 1/2001 Berstis Office Action issued by Canadian Intellectual Property Office, Cana
6,199,014 B1 3, 2001 Walker et al. dian Patent Application No. 2,560,560, Mar. 18, 2009, 2 pages.
6,208,934 B1 3, 2001 Bechtolsheim Office Action issued by Canadian Intellectual Property Office, Cana
6,233,523 B1 5, 2001 Sood dian Patent Application No. 2,560.558, Aug. 7, 2009, 3 pages.
6,262,741 B1 7/2001 Davies ....................... 345/423 Office Action Issued by Canadian Intellectual Property Office, Cana
6,266,614 B1 7/2001 Alumbaugh dian Patent Application No. 2,560,386, Jun. 23, 2009, 2 pages.
6,278,432 B1 8/2001 Ratnakar Office Action Issued by Canadian Intellectual Property Office, Cana
6,278,938 B1 8/2001 Alumbaugh dian Patent Application No. 2,560,386, Oct. 29, 2007, 3 pages.
6,321,158 B1 1 1/2001 DeLorime et al. Canadian Office Action, Canadian Application No. 2,560.560, Feb. 5,
6,331,869 B1 12/2001 Furlanet al. 2008, 3 pages.
6,337,708 B1 1/2002 Furlanet al. Indian Office Action, Indian Patent Application No. 1237/MUMNP/
6.404.906 B2 6/2002 Bacus et all 2006, Nov. 13, 2007, 2 pages.
WI
6.421,053 B1 7/2002 Johns et al. Indian Office Action, Indian Patent Application No. 1247/MUMNP/
2006, Nov. 8, 2007, 2 pages.
6,522,336 B1 2/2003 Yuasa PCT International Search Report and Written Opinion, PCT/US06/
6,538,656 B1 3, 2003 Cheung et al. 494.00, Feb. 12, 2008, 9 pages.
6,573,905 B1 6/2003 MacInnis et al. Office Action dated Jul. 2, 2003, U.S. Appl. No. 09/729,613, 7 pages.
6,658,351 B2 12/2003 Seto et al. Office Action dated Nov. 26, 2003, U.S. Appl. No. 09/729,613, 7
6,826,472 B1 1 1/2004 Kamei et al. pageS.
7.050,068 B1 5/2006 Bastos et al. Office Action dated Sep. 15, 2003, U.S. Appl. No. 09/768,928, 13
7,081,902 B1 7/2006 Crow et al. pageS.
7,158,878 B2 1/2007 Rasmussen et al. Office Action for U.S. Appl. No. 1 1/323,603, Jul. 29, 2009, 5 pages.
7,222.306 B2 5, 2007 Kaasila et al. Office Action for U.S. Appl. No. 1 1/305,694, Dec. 3, 2009, 12 pages.
7,260,474 B1 8/2007 Thayathil et al. Office Action for U.S. Appl. No. 11/088,542, Dec. 3, 2008, 5 pages.
7,379,811 B2 5/2008 Rasmussen et al. Office Action for U.S. Appl. No. 12/573,698, May 17, 2010, 6 pages.
7,451,041 B2 11/2008 Laumeyer et al. Amendment and Response, U.S. Appl. No. 09/729,613, Oct. 2, 2003,
7,542,882 B2 6/2009 Agrawala et al. 13 pages.
7,565,240 B2 7/2009 Tomizawa Barclay, T. et al., “The Microsoft TerraServer.” Microsoft Research,
2001/0050999 A1 12, 2001 Bacus et al. Microsoft Corporation, Jun 1998.
2002fOO67353 A1 6/2002 Kenyon et al. Brenner, C. et al Extracting Landmarks For Car Navigation Sys
2002fO1596.57 A1 10, 2002 DeLorime tems. Using Existing GIS Databases and Laser Scanning.” ISPRS
2002/0163654 A1 1 1/2002 Levantovsky
Archives,
B
Sep. 82003, 6 Pages, vol. --XXXIV, Part3/W8.
urnett, G.E., &"Turn -
right at the King's Head”%d TY------.
Drivers' requirements
2003/0095135 A1 5/2003 Kassila et al. for route guidance information, A Doctoral Thesis of Loughborough
2004.0075660 A1 4/2004 Liao et al. University, Nov. 1998, 341 pages, online retrieved on Feb. 22.
2004/O145599 A1 7/2004 Taoka et al. 2010. Retrieved from the internet <URL: http://dspace.mit.edu/
2004/0217980 A1 11, 2004 Radburn handlef1721.1/14225>.
2005, 0122294 A1 6, 2005 Ben-David et al. Burnett, G.E., "Turn right at the traffic lights' The requirement for
2005, 0131634 A1 6/2005 Ignatin landmarks in vehicle navigation systems, The Journal of Navigation,
2005, 0171686 A1 8, 2005 Davis 2000, Page 499-510, vol. 53 No. 3.
2005/0270311 A1 12/2005 Rasmussen et al. Davis, J.R., “The Back Seat Driver: Real Time Spoken Driving
2006/0173841 A1 8, 2006 Bill Instructions.” IEEE, 1989, pp. 146-150.
2007/0010942 A1 1/2007 B11 Potmesil, M., “Maps Alive: Viewing Geospatial Information on the
2007, 008083.0 A1 4/2007 Sacks WWW,” online Retrieved on Feb. 19, 2009 Retrieved from the
2007/0106468 A1 5, 2007 Eichenbaum et al. internet: <URL:http://geckil.com/-harvest/www6/Technical/Pa
2007/0203643 A1 8/2007 Ramaswamy et al. per 130/Paper 130 . . . >.
2007/0239348 A1 10/2007 Cheung Samet, H., “Marco: Map Retrieval by Content.” IEEE Transactions
on Pattern Analysis and Machine Intelligence, Aug. 1996, pp. 783
798, vol. 18, No. 8.
FOREIGN PATENT DOCUMENTS Yamaichi, R., “We can see web business models of the Windows 2000
EP O967556 A2 12/1999 era Backside of Exchange2000 (Café www.exchange2000.com)”.
JP 61-135270 (A) 6, 1986 BackOffice WORLD, Oct. 1, 2000, pp. 91-97 vol. 3, IDG Japan.
1, 2000
(With English Summary).
JP 2000-029448 (A)
JP 2002-032280 (A) 1, 2002 * cited by examiner
U.S. Patent Feb. 22, 2011 Sheet 1 of 30 US 7,894.984 B2

100

Enter Location:

Address or Intersection:
353 Main St.

Billings

State: Zip/Postal Code:


MT 45619

REQUEST MAP

FIG. 1 (Prior Art)


U.S. Patent Feb. 22, 2011 Sheet 2 of 30 US 7,894.984 B2

100

208

210 Map of: s Main St.


Billings, MT
45619

FIG. 2 (Prior Art)


U.S. Patent Feb. 22, 2011 Sheet 3 of 30 US 7,894.984 B2

300 HTTP Request 310


Web Browser Map Vectors
Database

FIG. 3 (Prior Art)

300 HTTP Request 305 DB Query 410


Map Rasters
Database
Image Image

FIG. 4 (Prior Art)


U.S. Patent Feb. 22, 2011 Sheet 4 of 30 US 7,894.984 B2

503
Computing Til
Device 1C NCVC

520
Location Data
Server

FIG.S
U.S. Patent Feb. 22, 2011 Sheet 5 Of 30 US 7,894.984 B2

503/510/51.5/520

610 615
625 ar Main ROM
Input Devices Memory

630
Output Devices

600

605.
Processor
635
Communication
Interface

FIG. 6
U.S. Patent Feb. 22, 2011 Sheet 6 of 30 US 7,894.984 B2

700 705
Application Local Memory
Software
Map Tiles

HTTP Request Map Tiles

715
Map Tile
Storage
Map Tiles

FIG. 7
U.S. Patent Feb. 22, 2011 Sheet 7 Of 30 US 7,894.984 B2

85

33343

840

82O

855

845

805

86)

800

F.G. 8
U.S. Patent Feb. 22, 2011 Sheet 8 of 30 US 7,894.984 B2

900
Tile Storage

920
Map Data 905

910
Map Painter
Library

FIG. 9

920
Map Data
Storage

1015
Drill-Down
Server

1010 1000 1005


Geomap Server Location Data Local Search
Server Server

F.G. 10
U.S. Patent Feb. 22, 2011 Sheet 9 Of 30 US 7,894.984 B2

100 FIG 11
10
U.S. Patent Feb. 22, 2011 Sheet 10 of 30 US 7,894.984 B2

1200

1 10

FIG. 12
U.S. Patent Feb. 22, 2011 Sheet 11 of 30 US 7,894.984 B2

(-1 10, 35,5) (-109,35, 5) (-108, 35,5) (-107, 35,5)

(-i 10,34, 5) (109.34, 5). (107.34, 5)


(-108,34.5).

(-110,33, 5) (109.33,5) eros, 33.5) (-io, 33,5)


1305

(-110, 32, 5) (-09, 32.5) cios, as (-107, 32,5)

(-1 10, 31, 5) (-109, 31, 5) (-08, 31, 5) (-107, 31, 5) (-106, 31, 5)

1300

F.G. 13
U.S. Patent Feb. 22, 2011 Sheet 12 of 30 US 7,894.984 B2

1400
Client Receives
Location Candidate 445
Determine Next Tile
Request
1405
Client Transmits
Location Candidate to
Location Server
1450 1455.
More Tiles? End
No
-D
1410
Location Server Parses
Location Candidate Yes

1415
Client Receives
Location Data from
Location Server

1420
Client Uses Location
Data to Create a Tile
Request

1425 430
Stored Client Retrieves Tile
Locally? from Tile Server

1435
Client Retrieves Tile
from Local Memory

1440
Display Tile

FIG. 14
U.S. Patent Feb. 22, 2011 Sheet 13 of 30 US 7,894.984 B2

1500
Client Receives Request
for Travel Directions

1505
Client Transmits Travel
Direction Information to
Location Server

1510
Location Server Parses
Travel Direction
Information

1515
Client Receives Travel
Direction Data from
Location Server

1520
Client Determines Vectors

1525 1528
Client Renders Map According Client Generates and
to Flow Chart in Figure 14 Overlays Travel
Direction Image on
Map
1530
Client Requests Travel
Direction Image from
Location Server

1535
Location Server Creates
Travel Direction Image

1540
Client Overlays Travel
Direction Image on Map

FIG. 15
U.S. Patent Feb. 22, 2011 Sheet 14 of 30 US 7,894.984 B2

1600
Client Receives Input
Indicating Pan Event

1605
Client Moves Underlying
Tiles Relative to Clipping
Viewer

16 O
Client Determines location
of Needed Tiles

165
Client Uses Location Data
to Create a Tile Request

1525
Client Obtains Needed Tiles
According to Flow Chart in
Figure 14

F.G. 16
U.S. Patent Feb. 22, 2011 Sheet 15 Of 30 US 7,894.984 B2

F.G. 17 00
U.S. Patent Feb. 22, 2011 Sheet 16 of 30 US 7,894.984 B2

10

F.G. 18 ()()
U.S. Patent Feb. 22, 2011 Sheet 17 Of 30 US 7,894.984 B2

F.G. 19 00
U.S. Patent Feb. 22, 2011 Sheet 18 of 30 US 7,894.984 B2

1 O

FIG. 20 100
U.S. Patent Feb. 22, 2011 Sheet 19 Of 30 US 7,894.984 B2

1 O

FIG 21 00
U.S. Patent Feb. 22, 2011 Sheet 20 of 30 US 7,894.984 B2

2200
Client Receives a Zoom
Action Event

2205
Client Determines the
Center of the Zoomed
Display

221 O
Client Uses Location Data
to Create a Tile Request
with New Zoom Level

215
Client Renders Zoomed Map
According to Figure 14

FIG. 22
U.S. Patent Feb. 22, 2011 Sheet 21 of 30 US 7,894.984 B2

2300
Client Receives Request
for Location-Based
Information

2305
Client Transmits Request
to Location Server

2310
Location Server Parses
Request

315
Client Receives Location
Based Information from
Location Server

2320
Client Translates Location
Information Into Pixel
Information

325
Client Retrieves Markers
and Shadows to Be Placed
on Map

2330
Client Places Shadows on
Map

335
Client Places Markers on
Map

FIG. 23
U.S. Patent Feb. 22, 2011 Sheet 22 of 30 US 7,894.984 B2

830

85

82:38: 8.
820

805

800

FG. 24
U.S. Patent Feb. 22, 2011 Sheet 23 of 30 US 7,894.984 B2

25

2505

FIG. 25
U.S. Patent Feb. 22, 2011 Sheet 24 of 30 US 7,894.984 B2

2620 2605 265

260

9, 254-7477
8. Swifk. AWE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-2614

26OO

262

F.G. 26A
U.S. Paten Feb. 22, 2011 Sheet 25 Of 30 US 7,894.984 B2

2625

Pizza Hut
(713)254-7477
1709 Swink Awe
Rocky Ford, CO 81067
Directions. To here - From here 2640

2635

2645

2600

FIG. 26B
U.S. Patent Feb. 22, 2011 Sheet 26 of 30 US 7,894.984 B2

85

820

2720

845

805
270

800

FIG. 27
U.S. Patent Feb. 22, 2011 Sheet 27 Of 30 US 7,894.984 B2

280
805

F.G. 28
U.S. Patent Feb. 22, 2011 Sheet 28 of 30 US 7,894.984 B2

2900
Client Receives a User
Selection of Location
Information

290S
Client Creates HTML
Based on Location
Information

29 O
Client Determines Pre
rendered Pieces for HTML
Window

95
Client Connects Pre
Rendered Pieces to Create
Information Window

2920
Client Determines Pre-rendered Pieces
for Information Window Shadow

2922
Client Connects Pre-rendered Pieces to
Create Information Window Shadow

2925
Client Places Information
Window Shadow on Map

2930
Client Places Information
Window on Map

FIG. 29
U.S. Patent Feb. 22, 2011 Sheet 29 Of 30 US 7,894.984 B2

3000
Client Receives
Notification of Change in
Window Size

3005
Client Determines Center
of Map window

3010 30.15
Window Size Client Reduces Size of
Increased? Clipping Window

3O20
3025 Client Re-Centers Clipping
Client Determines New Window on Map Center
Tiles Needed for Extra
Space

3030
Client Requests New Tiles

3035
Client Places New Tiles in
Tile Table

FIG. 30
U.S. Patent Feb. 22, 2011 Sheet 30 of 30 US 7,894.984 B2

1) <irag src="Screen tile.gif" width="128" height="123">

2) <ing Src "print R. C. W.W >

3) <ing src="print tile.gif" width="123" height:"123">

FG, 31
US 7,894.984 B2
1. 2
DIGITAL MAPPING SYSTEM by address icon 208 at the center of the image. Also, direction
buttons or other similar user interface objects, such as “down
CROSS-REFERENCE TO RELATED arrow' direction button 215, may be provided to allow the
APPLICATIONS user to “pan’ the image. Such as by displaying more of the
map information that was previously hidden because it was
This application is a divisional of U.S. patent application beyond the “southern boundary of map image 205, while
Ser. No. 12/127,815 filed on May 27, 2008, which is a con shifting and hiding a corresponding portion of the previously
tinuation of U.S. patent application Ser. No. 11/567,054 filed displayed “northern portion of the map information. As
on Dec. 5, 2006, which is a continuation of U.S. patent appli shown in FIG. 2. Such image control objects are convention
cation Ser. No. 117051,534, filed on Feb. 5, 2005 and entitled 10 ally displayed outside the boundary area of the map image
“Digital Mapping System”, which claims priority of U.S. 205, reducing the amount of space available for the map
Provisional Patent Application No. 60/567.946, filed May. 3, image 205 within the map display web page 200.
2004, and U.S. Provisional Patent Application No. 60/555, Typically, when image control objects (such as Zoom con
501, filed Mar. 23, 2004, where the entirety of each of said trol objects 200 or direction button 215 shown in FIG. 2) are
applications is hereby incorporated herein by reference. 15 selected, an HTTP request is transmitted to a server, which
then transmits a new image containing the new map informa
BACKGROUND tion to be displayed at the selected Zoom level.
Specifically, in an exemplary system, as shown in FIG.3, a
1. Field of the Invention web browser 300 sends an HTTP request containing location
Implementations consistent with the principles of the information for a requested map image to a web server 305.
invention relate generally to mapping systems, and more The HTTP request may consist of location data received via a
specifically, to mapping systems in a digital environment. web browser user interface 100 through a data entry web page
2. Description of Related Art 105, as illustrated in FIG. 1. For example, as shown if FIG. 1
Computerized mapping systems have been developed for and described earlier, a user may enter the following desired
facilitating travel planning. For example, travel-planning 25 location to be mapped: 353 Main St., Billings, Mont., 45619.
Internet websites are commercially available and well The user then requests the directions by selecting a “Request
known. Such websites typically permit a user to input a query Map” button 110, and this selection event eventually causes
with a requested location so that a map associated with the the HTTP Request shown in FIG.3 to be transmitted (directly
requested location may be provided to the user. Also, well or indirectly) from web browser 300 to web server 305. In
known websites allow the user to entera start point and an end 30 response to the HTTP request, the web server 305 sends a
point for travel, which are then used to calculate and provide database query (“DB Query) to a map vectors database 310.
travel directions to the user. The map vectors database 310 typically determines the cor
By way ofbackground for the detailed discussion of certain responding vectors for the desired location data and transmits
aspects of the present invention that will follow, FIGS. 1-4 these vectors to the web server 305. The web server 305 then
depict certain aspects of an exemplary conventional digital 35 typically generates a bitmap image of the desired map using
mapping system. FIG. 1 illustrates a web browser user inter the received vectors, and converts the bitmap into an image
face 100 that displays a map request entry web page 105. As format that is supported by the web browser 300 (e.g., GIF,
shown, a user has entered a desired location of 353 Main St., PNG, JPEG, and the like...). The web server 305then transmits
Billings, Mont. 45619. After entering the desired location to the image to the web browser 300, generally embedding it
be mapped, as shown in FIG. 1, the user then requests a map 40 within Hypertext Markup Language (HTML) code. The map
(typically from a remote server) by selecting a “Request image is then displayed to the user via the web browser user
Map” button 110. A map image is then typically generated at interface 100 (as shown in FIG. 2 and described earlier).
the remote server, transmitted to the user's computing device, Thus, when the user requests a new map view, e.g., by enter
and eventually displayed on the web browser user interface ing a postal address, or by clicking a navigation link next to a
100 in a map display web page. 45 current map view, the web browser 300 sends to a web server
FIG. 2 illustrates an exemplary map display web page 200 305 a request indicating the boundaries of the new map view.
on a web browser user interface 100. Here, a map display The web server 305 in turn extracts the corresponding vector
webpage 200 displays the results of the map request from based map data from a database, and draws a bitmap image of
FIG.1. The displayed information generally consists of a map the map. The web server 305 then converts the bitmap image
image 205, which depicts the requested location and Sur 50 to an image format supported by the web browser 300 and
rounding area. As shown in FIG. 2, the requested location is returns the image, sometimes embedded in HTML, to the web
identified on the map image 205 by an address icon 208, and browser 300 for display to the user. Commercial implemen
the address icon 208 is typically located in the center of map tations of such systems include AOL's MapQuest (http://
image 205. The requested location and address icon 208 may www.mapquest.com), Yahoo’s Telcontar-based “Smart
also be displayed on a map legend window 210 within map 55 View' maps (http://maps.yahoo.com), and Microsoft's
display web page 200. The address icon 208 is typically a Map.Point.net Suite (e.g. http://maps.msn.com).
simple two-dimensional image which, if displayed within FIG. 4 illustrates a second exemplary system used for
map image 205 in close proximity with other Such icons, may providing map data to a web browser. As shown in FIG. 4, a
create visual clutter and confuse or mislead the user as to web browser 300 transmits an HTTP request to a web server
where each icon is actually pointing within map image 205. 60 305 in the same manner that was described earlier with
The map webpage 200 may also display buttons or other respect to FIG. 3. Upon receiving HTTP request from web
user interface objects that may be selected to control the browser 300, the web server 305 shown in FIG.4 transmits a
manner in which map image 205 is displayed. For example, as database query ("DB Query) containing the requested loca
shown in FIG. 2, Zoom control objects 220 are generally tion data to a map raster database 410. The map raster data
provided to allow the user to "Zoom in” or “Zoom out” and 65 base 410 extracts the appropriate image based on the database
thereby affect the displayed scale of map image 205 accord query from among a larger pre-rendered map image. The
ingly, typically while retaining the desired location marked requested image is then transmitted to the web server 305,
US 7,894.984 B2
3 4
which then transmits the image to the web browser 300 as FIG. 10 illustrates further aspects of an exemplary server
described earlier. Thus, in a digital mapping system as shown side architecture consistent with principles of the present
in FIG. 4, the steps of extracting vectors and drawing a map invention.
image are replaced by simply extracting the appropriate part FIG. 11 illustrates an exemplary map image tile grid and
of a larger, pre-rendered image. Commercial implementa clipping rectangle according to aspects of the present inven
tions of such systems include Britain's MultiMaps (http:// tion.
multimaps.com) and Australia's WhereIs (http://www FIG. 12 depicts a resulting map image after comparing an
..whereis.com.au). It should also be noted that such systems exemplary tile grid with a clipping rectangle according to
typically generate the map images from the same vector aspects of the present invention.
based files that would also be used to generate printed ver 10 FIG. 13 illustrates the underlying tile grid coordinates and
sions of Such maps. clipping shape corresponding to an exemplary set of dis
Certain providers of digital mapping web sites have played images according to aspects of the present invention.
observed that some of the above problems may be overcome FIG. 14 illustrates a flowchart of one embodiment for
by transmitting a number of Smaller images (known as transmitting map tiles to a web browser and caching the tiles
“tiles') from the web server 305 to the web browser 300. 15 locally at the web browser according to aspects of the present
These smallertiles can then be assembled by the web browser invention.
300 into a larger image. For example Microsoft's TerraServer FIG. 15 illustrates a flowchart that may be used according
USA site (at http://terraserver homeadvisor.msn.com/) cur to one embodiment for displaying driving directions as an
rently uses a tiling approach for displaying satellite images. overlay onto a map image.
FIG. 16 depicts a flow chart for performing a map image
BRIEF SUMMARY panning operation according to one embodiment of the
present invention.
Various methods, systems, and apparatus for implement FIGS. 17 through 21 illustrate an exemplary process of
ing aspects of a digital mapping system are disclosed. One panning west by /3 of the clipping shape’s width according to
Such method includes sending a location request from a cli 25 one embodiment of the present invention.
ent-side computing device to a map tile server, receiving a set FIG.22 depicts an exemplary flow chart for implementing
of map tiles in response to the location request, assembling a Zooming operation according to one embodiment of the
said received map tiles into a tile grid, aligning the tile grid present invention.
relative to a clipping shape, and displaying the result as a map FIG. 23 depicts an exemplary flow chart for overlaying a
image. One apparatus according to aspects of the present 30 set of location markers onto a map image according to one
invention includes means for sending a location request from embodiment of the present invention.
a client-side computing device to a map tile server, means for FIG. 24 depicts an exemplary map display web page with
receiving a set of map tiles in response to the location request, multiple overlaid location markers according to aspects of the
means for assembling said received map tiles into a tile grid, present invention.
means for aligning the tile grid relative to a clipping shape, 35 FIG. 25 depicts exemplary details of a location marker
and means for displaying the result as a map image. Such an according to aspects of the present invention.
apparatus may further include direction control or Zoom con FIG. 26A depicts exemplary details of an information win
trol objects as interactive overlays on the displayed map dow according to aspects of the present invention.
image, and may also include route or location overlays on the FIG. 26B depicts additional exemplary details of an infor
map tile image. 40 mation window according to aspects of the present invention.
FIG. 27 depicts an exemplary map display web page with
BRIEF DESCRIPTION OF THE DRAWINGS an overlaid driving direction route trace according to aspects
of the present invention.
The accompanying drawings, which are incorporated in FIG. 28 depicts an exemplary map display web page with
and constitute a part of this specification, illustrate various 45 an overlaid area boundary trace according to aspects of the
embodiments. In the drawings, present invention.
FIG. 1 illustrates an exemplary web browser displaying a FIG. 29 depicts an exemplary flow chart for overlaying a
map request entry web page. set of information windows onto a map image according to
FIG. 2 illustrates an exemplary map display on a web one embodiment of the present invention.
browser. 50 FIG. 30 depicts an exemplary flow chart for resizing a map
FIG. 3 illustrates an exemplary conventional vector-based image display window according to one embodiment of the
digital mapping system architecture. present invention.
FIG. 4 illustrates an exemplary conventional raster-based FIG. 31 depicts an exemplary set of map image tiles of
digital mapping system architecture. different resolutions for high-quality printing of map images
FIG.5 illustrates a distributed network system according to 55 according to one embodiment of the present invention.
aspects of the present invention.
FIG. 6 is an exemplary block diagram of a client-side or DETAILED DESCRIPTION
server-side computing device according to aspects of the
present invention. Various aspects of the disclosure are described herein in the
FIG. 7 illustrates an exemplary tile-based digital mapping 60 context of an apparatus, system, and method for obtaining and
system architecture according to aspects of the present inven displaying mapping information. Those of ordinary skill in
tion. the art will realize that the following description is illustrative
FIG. 8 illustrates an exemplary combined map request only and not in any way limiting. Other aspects will readily
entry and map display web page according to aspects of the Suggest themselves to Such persons having the benefit of this
present invention. 65 disclosure.
FIG. 9 illustrates an exemplary server-side architecture For example, any number of computer programming lan
according to aspects of the present invention. guages, such as the Java language, JavaScript, Java Applet
US 7,894.984 B2
5 6
technology, C, C++, Perl, Pascal, Smalltalk, FORTRAN, The network 505 may be any type of distributed network,
assembly language, HTML (i.e., Hypertext Markup Lan Such as a local area network, wide area network, Switched
guage), DHTML (i.e., Dynamic Hypertext Markup Lan telephone network, Intranet, Internet or World Wide Web
guage), XML (i.e., eXtensible Markup Language), XLS (i.e., network. Alternatively, the network 505 may be a direct con
eXtensible Style Language), SVG (i.e., Scalable Vector nection between the computing device 503 and the servers
Graphics), VML (i.e., Vector Markup Language), Macrome 510,515, and 520. The computing device 503, network 505
dia's Flash technology, and the like, may be used to imple and/or servers 510,515, and 520 may be in communication
ment aspects of the present invention. Further, various pro via any type of wired or wireless connection. Moreover, the
gramming approaches Such as procedural, object-oriented or computing device 503, the servers 510, 515, and 520, and
artificial intelligence techniques may be employed, depend 10 other computing devices (not shown), and/or other servers
ing on the requirements of each particular implementation. (not shown) in communication with the network 505 may be
The same reference numbers will be used throughout the used to perform any or all functions described herein.
FIG. 6 is an exemplary diagram of a computing device 503,
drawings and description in this document to refer to the same or of servers 510, 515, and 520. Computing device/servers
or like parts. Further, certain figures in this specification are 15 503/510/515/520 may include a bus 600, one or more proces
flow charts illustrating methods and systems. It will be under sors 605, a main memory 610, a read-only memory (ROM)
stood that each block of these flow charts, and combinations 615, a storage device 620, one or more input devices 625, one
of blocks in these flow charts, may be implemented by com or more output devices 630, and a communication interface
puter program instructions. These computer program instruc 635. Bus 600 may include one or more conductors that permit
tions may be loaded onto a computer or other programmable communication among the components of computing device?
apparatus to produce a machine, such that the instructions Server SO3/510/515/S2O.
which execute on the computer or other programmable appa Processor 605 may include any type of conventional pro
ratus create structures for implementing the functions speci cessor, microprocessor, or processing logic that interprets and
fied in the flow chart block or blocks. These computer pro executes instructions. Main memory 610 may include a ran
gram instructions may also be stored in a computer-readable 25 dom-access memory (RAM) or another type of dynamic Stor
memory that can direct a computer or other programmable age device that stores information and instructions for execu
apparatus to function in a particular manner. Such that the tion by processor 605. ROM 615 may include a conventional
instructions stored in the computer-readable memory pro ROM device or another type of static storage device that
duce an article of manufacture including instruction struc stores static information and instructions for use by processor
tures which implement the function specified in the flow chart 30 605. Storage device 620 may include a magnetic and/or opti
block or blocks. The computer program instructions may also cal recording medium and its corresponding drive.
be loaded onto a computer or other programmable apparatus Input device(s) 625 may include one or more conventional
to cause a series of operational steps to be performed on the mechanisms that permit a user to input information to com
computer or other programmable apparatus to produce a puting device/server 503/510/515/520, such as a keyboard, a
computer implemented process such that the instructions 35 mouse, a pen, a stylus, handwriting recognition, Voice recog
which execute on the computer or other programmable appa nition, biometric mechanisms, and the like. Output device(s)
ratus provide steps for implementing the functions specified 630 may include one or more conventional mechanisms that
in the flow chart block or blocks.
output information to the user, including a display, a printer,
Accordingly, blocks of the flow charts Support combina a speaker, and the like. Communication interface 635 may
tions of structures for performing the specified functions and 40 include any transceiver-like mechanism that enables comput
combinations of steps for performing the specified functions. ing device/server 503/510/515/520 to communicate with
It will also be understood that each block of the flow charts, other devices and/or systems. For example, communication
and combinations of blocks in the flow charts, can be imple interface 635 may include mechanisms for communicating
mented by special purpose hardware-based computer sys with another device or system via a network, Such as network
tems which perform the specified functions or steps, or com 45 505.
binations of special purpose hardware and computer As will be described in detail below, computing device 503
instructions. and/or servers 510, 515, and 520, may perform operations
FIG. 5 illustrates a distributed network system 500 accord based on Software instructions that may be read into memory
ing to aspects of the present invention. A computing device 610 from another computer-readable medium, such as data
503 is shown, connected to a network505. Various servers are 50 storage device 620, or from another device via communica
also connected to the network505. For instance, a web server tion interface 635. The software instructions contained in
510, a tile server 515, and a location data server 520 are all memory 610 cause processor 605 to perform processes that
shown as being in communication with the network 505, will be described later. Alternatively, hardwired circuitry may
although other servers (not shown) may also be connected to be used in place of or in combination with software instruc
the network 505. The computing device 503 may be any type 55 tions to implement processes consistent with the present
of device configured for computing, such as a personal com invention. Thus, various implementations are not limited to
puter, a mobile phone, a personal digital assistant, a naviga any specific combination of hardware circuitry and software.
tion system located in a vehicle, and so on. The servers 510, A web browser (such as web browser 300 shown in FIGS.
515 and 520 may each be any device capable of hosting 3 and 4) comprising a web browser user interface (such as
services over the network 505, such as a network server or a 60 web browser interface 100 shown in FIGS. 1 and 2) may be
web server. The servers 510, 515, and 520 may also be used to display information (such as textual and graphical
capable of determining and/or obtaining some or all mapping information) on the computing device 503. The web browser
information based on user input. Alternatively, the computing 300 may comprise any type of visual display capable of
device 503 may be equipped with the capability to determine displaying information received via the network 505 shown
and/or obtain travel directions. In some implementations, the 65 in FIG. 5, such as Microsoft’s Internet Explorer browser,
computing device and the servers (or various portions Netscape's Navigator browser, Mozilla's Firefox browser,
thereof) may be co-located in one or more machines PalmSource's Web Browser, or any other browsing or other
US 7,894.984 B2
7 8
application software capable of communicating with network described in detail later, map image 805 is actually generated
405. The computing device 503 may also include a browser by aligning a tile grid relative to a clipping shape having
assistant. The browser assistant may include a plug-in, an approximately the same size and shape as the map image 805.
applet, a dynamic link library (DLL), or a similar executable The tile grid in one embodiment comprises a number of
object or process. Further, the browser assistant may be a 5 Smaller individual map tiles that are seamlessly arranged into
toolbar, Software button, or menu that provides an extension a larger image for display. Using image overlay technologies
to the web browser 300. Alternatively, the browser assistant and absolute positioning techniques that are well-known to
may be a part of the web browser 300, in which case the those skilled in the art, directional map control objects 815
browser 300 would implement the functionality of the and Zoom control objects 820 may actually be located within
browser assistant. 10 map image 805 itself, thereby increasing the area within
The browser 300 and/or the browser assistant may act as an display page 800 that is available for the map image 805. In
intermediary between the user and the computing device 503 this way, an arbitrary size for map image 805 may be imple
and/or the network 505. For example, source documents or mented, which is not limited to a whole number of map tiles.
other information received from devices connected to the Moreover, any arbitrary point may be located at the center of
network 505 may be output to the user via the browser 300. 15 map image 805. In one embodiment, location query text entry
Also, both the browser 300 and the browser assistant are field 825 is implemented as a single text field, such that the
capable of performing operations on the received source various components of the desired location to be mapped
documents prior to outputting the source documents to the (such as its Street address, city, state, or Zip code) do not need
user. Further, the browser 300 and/or the browser assistant to be specified using multiple fields. As will be discussed
may receive user input and transmit the inputted data to serv later, in one embodiment, FIG. 8 also includes billing point
ers 5057515/520 or other devices connected to the network 860 at the center of the map image (although billing point 860
505. is typically not a visible feature on map image 805).
When search button 830 is selected, the desired location to
Exemplary System Overview and User Interface be mapped that has been entered into text entry field 825 is
25 parsed, either at the user's computing device or at a remote
As described in more detail below, certain aspects of one server, and map image 805 is generated and displayed (by
embodiment assume the existence of large (e.g., on the scale means of the detailed processes that are described throughout
of the entire United States), contiguous map raster images at this document). The desired location that was entered into
each of an appropriate set of discrete Zoom-levels. During a entry field 825 may also be repeated and displayed as the map
one-time, off-line phase, the system generates and cuts these 30 title 840, either in its original or in its parsed form. The desired
large raster images into segments (e.g., rectangular tiles) of a location to be mapped is graphically identified within map
size generally an order of magnitude smaller than the desired image 805 by location marker 845 and its shadow 850. As will
map view, and stores these tiles in a format Supported by web be described later, by using effects that make location mark
browsers in a server-side database. ers to appear visually as two-dimensional, and which com
As shown in the example of FIG. 7, when a web user 35 prise angled shadows, visual clutter within map image 805 is
requests a new map view via application software 700 (such minimized, especially when multiple location markers are
as web browser 300 shown in FIGS. 3 and 4), HTTP requests located in close proximity to each other, and the actual loca
are sent to a server 710 only for the smallest set of tiles needed tion on the map corresponding to the location marker may be
in conjunction with the tiles that are already present in the more easily identified as a point.
web browser (or in the web browser's cache, shown as Local 40 In terms of user image control functionality, directional
Memory 705 in FIG. 7 (which, without limitation, could be map control objects 815 may be implemented as a set of
implemented as Main Memory 610, ROM 615, and/or Stor arrow-labeled pan buttons that cause the map to pan, say, by
age Device 620 as shown in FIG. 6) to produce the new view. 25% of the clipping shape size in the direction of the arrow.
The format of the responses to these HTTP tile requests These buttons could also be labeled by compass orientation,
contains information in the header fields that encourages the 45 such as “west,” “north, or “north-west.” As shown in FIG. 8,
web browser to cache the tiles locally. By executing a set of Zoom control objects 820 may include buttons labeled “+”
scripts, the web browser then seamlessly assembles the com and '-' that cause the map to Zoom in and out by a single
bined set of tiles into the new map view for presentation to the level, respectively. These buttons may also be labeled by the
user. Since the old map view in general is still present in the main geographic abstraction of the corresponding Zoom
browser, additional Scripts may be used to Smoothly animate 50 level, e.g., “street,” “city.” “county.” “state.” “country, and
the transition from the old to the new map view, either as part the like. As also shown in FIG. 8, Zoom control objects 820
of a panning and/or Zooming operation. Moreover, location may also include a slider with a discrete position for each
markers and routes can be overlaid on top of the pre-rendered Zoom level. From the user's perspective, moving the slider to
map tiles, for example in response to user requests for driving a specific Zoom level may have the same effect as selecting the
directions, local search, yellow page look-ups, and the like. In 55 corresponding Zoom level.
addition, similar techniques can be used to highlight areas and As additional examples of user interface functionality pro
streets on the map image, for example. vided in one embodiment, "clicking on’ or otherwise select
From the perspective of an end-user (such as a user inter ing a specific portion of map image 805 causes the selected
acting with a web browser running on computing device 503 location to pan to the center of the map image 805, while
shown in FIG. 5), FIG. 8 depicts one embodiment of a com 60 'double-clicking or otherwise emphatically selecting a spe
bined map request and map display page 800 according to cific portion of map image 805 causes the selected location to
aspects of the present invention. As shown in FIG. 8, page 800 pan to the center of the map image 805 and the Zoom level to
includes a map image 805, overlaid directional map control simultaneously increase. In another embodiment, “double
objects 815, overlaid Zoom control objects 820, location clicking or otherwise emphatically selecting a specific por
request text entry field 825, search button 830, information 65 tion of map image 805 causes the selected location to pan to
window 840, location marker 845, location marker shadow the center of the map image 805, while clicking on or other
850, and information window shadow 855. As will be wise selecting a location marker (either a marker within map
US 7,894.984 B2
10
image 805 or a marker adjacent to map image 805) causes an One embodiment also implements driving direction func
information window associated with the marker to open, and tionality, either by means of a single text entry field 825 as
Subsequently clicking on or otherwise selecting any portion shown in FIG. 8, or alternatively, by means of one text entry
of the map image causes the information window to close. field for the starting location and a second text entry field for
Dynamic resizing of maps is also supported in one embodi the end location (as illustrated by text entry fields 825 and 828
ment. For example, when a display window 800 is resized, the shown in FIG. 27). As a further exemplary alternative, driving
map image 805 inside the window is re-centered (so as to direction functionality may also be implemented by two sets
preserve the location that was the center in the previous win of specific text entry fields, one set for the starting location
dow size), and the map is resized (so that it shows a smaller fields (e.g., starting Street address, starting city, starting state,
area if the new window is smaller, or a larger area if the new 10 etc.), and a second set for the end location fields. Regardless
window is larger), without changing the Zoom level or gen of the driving direction entry field interface, one embodiment
erally requiring the re-transmission of image information to implements client-side rendering of the route information.
the user's web browser. In one embodiment, the user can Specifically, in one embodiment, the server transmits the
"grab'a corner or other portion of the map image 805 (e.g., by turn-by-turn textual directions to the client computing device,
holding down a mouse button while a mouse icon is pointing 15 along with the vector information for the graphical depiction
to the selected corner) and "drag' it to resize the map image of the entire route.
(e.g., by holding the mouse button down while moving the The graphical driving directions are then rendered by the
mouse to a selected location and then releasing the mouse client as an overlay on top of the previously rendered map
button). image. In another embodiment, once the client receives the
One embodiment implements mouse dragging functional vector information, the client computes the graphical defini
ity, whereby a map view may be smoothly shifted, for tion of the route overlay image and then transmits a request to
example, by holding down the user's mouse button, dragging the server to Supply the actual overlay image. Moreover, as
the mouse to a new location until the desired map view is shown in FIG. 27, textual driving direction maneuvers 2730
effected, and then releasing the mouse button. Moreover, map (e.g., “Take the Moffett Blvd. exit) may be displayed on the
scrolling functionality is also implemented in one embodi 25 web page 800 near the map image 805. Clicking on or other
ment, whereby a map view may be shifted (or “panned') wise selecting one of the textual driving directions opens an
simply through activation of the arrow keys on a user's key information window pointing to the corresponding section of
board, or via a similar user action. the map image 805 (e.g., the freeway off-ramp from south
In one embodiment, entering a whole or partial postal bound US-101 to Moffett Blvd.). As shown in FIG. 27, the
address into text entry field 825 causes the map image 805 to 30 information window displays a blow-up of the corresponding
pan to the corresponding location and Zoom to a level that section of the map image 805.
depends on the completeness of the address that was entered. In one embodiment, the information window additionally
For example, entering “6936 Bristol Dr. Berkeley Calif.” contains a “satellite' button or similar user interface object
pans to the corresponding location and sets the Zoom level to that, when clicked or otherwise selected, replaces the graphi
be close to street level, whereas simply entering “Berkeley, 35 cal blow-up of the map with a corresponding satellite photo
Calif” without more specific address information would pan graph of the same area. The graphical driving directions (i.e.,
to the center of the city of Berkeley and set the Zoom level to the traces depicting the route) can also be displayed as an
city level. Moreover, location outlines are implemented in overlay on top of the satellite picture. A “satellite' button or
one embodiment, such that if a user specifies a general area similar user interface object may also be included within (or
(e.g., a city, state, or Zip code) instead of a specific address, an 40 associated with) the main map image 805 such that, when
outline can be drawn around the general area to highlight it (as clicked or otherwise selected, the “satellite' button replaces
illustrated, for example, by location outline 2810 in FIG. 28). the pictorial type of map image 805 depicted in FIG.8 with a
This functionality can assist a user to gauge distances and corresponding satellite photograph of the same area.
focus on areas of interest. Also, in one embodiment, the user
may define a set of shortcuts (such as “home.” “work,” or 45 Server-Side Architecture and Map Tile Generation
“grandmother's house'), which when entered or otherwise
selected cause a “jump' action in the map image to the desired In one embodiment, maps are displayed by Stitching
shortcut location (or a "Zoom/pan’ action if the requested together in the browser a set of pre-rendered “tiles' of map
location is sufficiently close to the current location). image. These map tiles are produced during an off-line phase
As shown in FIG. 8, one embodiment also implements 50 by drawing very large maps of the entire geographic area
“information window' functionality, whereby clicking on or covered in each of a predetermined number discrete Zoom
otherwise selecting a location marker such as marker 845 levels (e.g., 15), then cutting those maps into tiles, and encod
opens an interactive window 840 and its shadow 855 overlaid ing the tiles into an appropriate image format (e.g., GIF). The
within map image 805 that contains more information about pre-rendered tiles are served as static images from a set of
the location represented by the marker. 55 servers. For example, to cover the entire continental United
In addition to entering a single location to be mapped into States, hundreds of millions of tiles are required, with a total
text entry field 825, users may execute combined searches in file size for the tiles in the order of hundreds of Gigabytes of
one embodiment, whereby users may specify items to search data. Instead of drawing a map image from the underlying
for and locations to map all within a single text box (e.g., data on demand, the entire map is pre-drawn in sections
“movies in San Francisco' or "pizza near Mountain View'). 60 (tiles), and the appropriate tiles are sent to the client when
Moreover, in conjunction with the location shortcuts they are needed. Thus, in general, a given map tile need only
described earlier, users can give names to specific locations be transmitted to the client once. This approach is more reli
(e.g., “home”, “work’) (which may or may not be associated able, faster, and requires lower bandwidth than conventional
with an address book or similar database or utility on the systems.
user's computing device), and then employ the shortcut 65 Thus, in an off-line process that is transparent to the user, a
names when entering searches into text entry field 825 (e.g., set of large, contiguous, pre-rendered raster images of the
when searching for “bars near work”). entire area covered by the map system are generated. One
US 7,894.984 B2
11 12
Such set of raster images is provided for each Zoom-level. a given area?' or “What map features fall within a given area
ranging from Street to country level, for example. Each map that have a priority level higher than a certain threshold?” The
image 805 (as shown in FIG. 8) that is eventually assembled result of the spatial query is transmitted to the tile maker 905
and displayed at a users web browser matches a Sub-area via the map painter library 905 and is used to generate map
(typically shaped as a rectangle) of one of these large pre tiles. The resulting map tiles of the tile making process are
determined raster images. Alternatively, the map image stored in map tile storage area 900.
boundary may be changed to appear as a different shape (e.g., To re-produce any sub-area view of the large raster image
a rectangle with rounded corners as shown in FIG. 8) by as a map image 805 on a user's web browser, in one embodi
overlying images onto the map image boundary that match or ment browser-side scripts require only the smallest set of tiles
blend with the background Surrounding the map image. 10 that together completely covers the desired view. For any
In one embodiment, the Zoom levels are numbered 0 thru Z, given implementation, the size of the tiles can be determined
where 0 represents the level closest to street level, and Z the heuristically, given the following trade-off: (1) Larger tiles
level the furthest away from street level. An arbitrary latitude/ tend to increase the total size (in both pixels and bytes) of the
longitude (“lat/lon') point within the area of interest is des tiles needed to produce a given view; while (2) Smaller tiles
ignated and defined as the origin, or origo (for example the 15 tend to increase the number of separate HTTP requests
geographic center of the contiguous United States). Then, at needed to produce a given view. In one embodiment, a tile
each Zoom level Z, the coordinate triplet (0,0,z) is assigned to size of 128x128 pixels is used, stored in the GIF format. Other
the pixel of the Z-level raster image containing this origin. embodiments use a tile size of 256x256 pixels, stored either in
Using the standard computer graphics convention that X-axis the GIF, JPEG, or PNG formats. Other tile sizes and image
coordinates grow left-to-right, and y-axis coordinates grow storage formats may be used, depending on the requirements
up-to-down, a unique coordinate triplet (x, y, z) is assigned to of each particular implementation. These tiles thus form a
each pixel of each of the raster images. regular, square grid, and this property facilitates system
A coordinate conversion routine, given a Zoom-level Z, implementation in one embodiment. However, persons
converts a lat/lon coordinate pair to the appropriate (x, y, z) skilled in the art will recognize that any other division of the
pixel coordinate, and vice versa. The details of this conver 25 large raster images into tiles of any shapes and sizes that
sion depend on the map projection that was used in producing allows for seamless assembly on the client-side may also be
the raster images in the first instance. used to achieve the effect of the present invention.
During an initial, off-line phase that need only be per Alternatively, rather than a database on the server side, in
formed when the underlying map information changes sig one embodiment each tile may simply be stored in a separate
nificantly (e.g., once every few months), each of the large 30 file, accessible using unique URLS Such as
raster images are “cut” into rectangular tiles. As shown in http://<domain/77-18/1/-145 12 7.gif
FIG. 9, in one embodiment, the process of generating and
cutting the large raster images into map tiles is cooperatively where the directory path 77-1871 in this example depends
performed by tile maker 905 in conjunction with map painter solely on the tile coordinates, in this exemplary case equal to
library 910, and a commercially available RME ("rich map 35 (-145, 12, 7).
engine') library 915. Among other tasks, the tile maker 905 For simplicity, the first tile of each Zoom-level Z is located
ensures that adjacent Sub-image tiles line up closely along such that the tile's upper-left pixel has coordinates (0, 0, Z).
their common border, in particular where label-placement is This rule facilitates assignment of a unique coordinate triplet
concerned. Given map projection issues well known to per to each tile by integer-dividing the pixel X and y coordinates
Sons skilled in the art, it may be necessary to divide the area 40 of the tile's upper-left pixel by the width and height of the tile,
covered by the map system into Smaller areas, and deal with respectively. Thus, a total of three coordinate systems are
each separately. utilized: lat/lon coordinates, pixel (x,y, z) coordinates and tile
Still referring to FIG. 9, the underlying map data is stored (x, y, z) coordinates. As persons skilled in the art will recog
in map data storage area 920. In one embodiment, the stored nize, this particular choice of coordinate systems is arbitrary,
map data comprises commercially available NavTech data 45 and chosen simply to aid in describing the algorithms used in
that has been compiled by Telcontar (a commercial provider one embodiment. In general, any consistent coordinate sys
of digital map and navigation information) into RMF (Rich tem will suffice. In turn, each pixel belongs to a unique tile,
Map Format) files. Persons skilled in the art will recognize the coordinates of which are easily computed.
that RMF is a format compact, binary format optimized for
spatial query processing. Among other tasks, one embodi 50 Front-End Server
ment of the present invention takes advantage of this format to
generate map images and create route information. RMF is a In one embodiment, a front-end server (such as server 710
spatial format that organizes data in a multi-dimension fash depicted in FIG. 7 or web server 510 in FIG. 5) responds to
ion, Such that features near each other in reality are stored each query Submitted by a user by returning a web page to a
close together in the database. This means that once an item in 55 hidden frame that contains data accessed by client-side code
a spatially formatted dataset is found, other items close by can implemented in JavaScript. Thus, the front-end server 710/
also be found with relative ease. Persons skilled in the art will 510 interacts with a JavaScript-based set of programs running
recognize that there are many other ways to organize the data, on the user's browser to generate dynamic HTML
such as sequentially or in layers. Still referring to FIG. 9, in (“DHTML') code. Via this mechanism, user interface func
one embodiment the tile maker 905 communicates with the 60 tionality described earlier, Such as panning and Zooming the
map painter library 910 to request map data for making tiles. map view 805 shown in FIG. 8, can be implemented within
The map painter library 910 in turn communicates with the the client computing device 503 without interaction with the
commercially available RME library 915 to access informa front-end server 710/510. Instead, as shown in FIG. 5, the
tion from map data storage 920. Persons skilled in the art will client computing device 503 merely has to request and dis
recognize that the RME library supports spatial queries that 65 play tiles as needed from the tile server 520, which serves tile
request information involving the geographic relation of two sets that have been previously generated as described above
or more items. Examples are “What map features fall within with reference to FIG. 9.
US 7,894.984 B2
13 14
The basic mode of operation of front-end server 710/510 is Angeles, Calif. to 801 University Ave. Palo Alto, Calif”).
to provide a response to a user's query entered into the text These are queries that contain two distinct geographic loca
entry field (such as field 825 shown in FIG. 8) in the map tions. As described earlier, in response to Such queries, in one
display page 800. When a user submits a query, the client-side embodiment front-end server 710/510 can transmit the route
JavaScript code forms a HTTP request that contains the con information, along with textual turn-by-turn directions, to the
tents of the query as well as the current state of the map view client, which may then display the route as a highlighted
and submits that information to front-end server 710/510, overlaid path in the map image 805. As also described earlier,
directing the resultant page to appear in a hidden iframe (or the user may interact with these textual directions by Zooming
“virtual page'). This mechanism allows the client to receive into portions of the route (e.g., by clicking on or otherwise
data required to implement the mapping system (including 10 selecting specific driving maneuvers) to obtain additional
various features of the mapping system, Such as, for example, textual or graphical details.
overlays for driving directions and other items, without hav The front end server 710/510 can be implemented as a
ing to reload the main/visible web page, but while still number of different logical control flows which are selected
enabling the browser's history and/backward/forward but based on a query classifier. A query classifier includes a
tons to work as expected, so that the user may do a local 15 location extractor that takes a set oftemplates defining how a
search, for example, then get directions, and click back to get query string may be broken down into constituent parts
back to local search results. Once the virtual page is loaded at including search terms, geographic location identifiers, and
the client, JavaScript on the main page may pull the data from literal text. For example, a template Such as
the virtual page and adjust the main page accordingly, by: (1) “{QUERY}{STANDALONE CITY” would matcha query
changing the HTML title; (2) changing the search form; (3) entered by a user simply as "pizza palo alto' and result in a
replacing the HTML IMG references in the tile grid with the search for "pizza' near the centroid of Palo Alto, Calif., The
URLs of the tiles to be displayed in the map image; (4) location extractor has access to a relatively large database
panning and/or Zooming the map display; and/or (5) adding consisting of a set of location names of various types, such as
or replacing one or more overlays on the map. street names, city names, and the like.
In one embodiment the following types of queries are 25 In one embodiment, as shown in FIG. 10, the front end
recognized and processed: server 710/510 also includes a geocoding/geomap server
1) Location queries (e.g. “Berkeley'). These are queries 1010 that converts an unstructured location into a structured
that contain a single geographic location. In response to Such location plus a geographic point/line/area that can be marked
queries, the front-end server 710/510 directs the client to pan on the map image 805 of FIG.8. As is also shown in FIG. 10,
and/or Zoom the map to that location and to mark the bound 30 Geomap server 1010 cooperatively communicates with drill
aries of that location on the display. For example, in one down server 1015, map data storage area 920, location data
embodiment a "point’ query (e.g., for a specific address, as server 1000, and local search server 1010 to process geo
shown in FIG. 8) results in a display that includes a location graphic features such as Street addresses, streets, intersec
marker for the requested location, while a "line' query (e.g., tions, points of interest, cities, neighborhoods, ZIP codes,
for a specific street in a specific city, without specifying the 35 counties, metropolitan areas, states, and the like (as well as
street number) results in a display where the requested line is their international equivalents). For point features Such as
highlighted on the map as an overlay, and an “area' query street addresses, the result of the conversion is a single (lati
(e.g., for a specific city Such as "Anytown”) results in a tude, longitude) point. For linear features such as streets and
display where the requested area is highlighted on the map for area features Such as cities, the result of the conversion is
image as an overlay (as shown in FIG. 28). 40 either a polyline (e.g., for a street) or a polygon (e.g., for a
2) Local search queries (e.g. "pizza”, “post office'). These city), that defines each of those features. Alternatively, the
are queries that contain a business name, category, or otherset result of the conversion may simply be an axis-aligned
of search terms, but no geographic locations. In response to bounding box.
Such queries, using techniques that are known to those skilled As is also shown in FIG. 10, in one embodiment, the front
in the art, the front-end server 710/510 searches for busi 45 end server 710/510 also includes a local search server 1005
nesses matching the query within (or near) the current map for finding search results in or around a given geographic
view based on the user's navigation of the map or the posi location. For combined queries such as "pizza in palo alto.”
tioning resulting from querying for a location, and directs the the local search server 1005 may wait to receive the results of
client computing device 503 to display the results as a set of the geocoding/geomap server 1010 before executing. For
location markers 845/850 on the map image 805, optionally 50 digital mapping systems, implementing a local search scoring
along with a legend associated with the map image 805 algorithm within local search server 1010 that has a flexible
describing the search result that each marker symbolizes. definition of location restriction and a notion of distance
3) Qualified local search queries (e.g. "pizza in Palo Alto, flattening is desirable. The user should advantageously be
“single malt Scotch near San Francisco'). These are queries able to search for businesses within the current map view that
that contain both search terms and a geographic location. In 55 match a given set of query terms. This requires that the local
response to such queries, the front-end server 710/510 directs search code allow restrictions that have the form of minimum
the client computing device 503 to pan and/or Zoom to the and maximum latitude and longitude coordinates, instead of
indicated location and to display the search results found just centerpoint and radius. Some degree of distance flatten
within or around that location. Alternatively, the geographic ing is generally necessary. In other words, results at the exact
information contained in the query is converted to lat/lon 60 center of the map display should not be scored higher than
points, a local search is conducted with respect to this set of results elsewhere in the display view. For example, searching
lat/lon points, and Subsequently the Zoom level is set to ensure for "pizza in palo alto should not score two Palo Alto pizza
that all of the locations in the result of the local search are parlors differently because one happens to be closer to the
displayed on the map image (see FIG. 24 for a resulting centroid of Palo Alto than the other.
display, given a search for “great sushi in New York'). 65 In one embodiment, when a "driving directions' query is
4) Driving directions queries (e.g., “from San Francisco to recognized by front-end server 510/710, the front-end server
New York,” “from home to work, or “from 123 Main St. Los converts the Source and destination addresses to a set of
US 7,894.984 B2
15 16
simple turn-by-turn directions, as well as a polyline specify execution are, at least logically, recorded in an off-screen
ing the (latitude, longitude) coordinates along the route. The buffer, which is displayed when the scriptyields control back
front-end server 510/710 may then transmit the turn-by-turn to the browser.
directions to the client computing device using XML (e.g., in As described in more detail below, client-side algorithms
a VPage), along with a set of polylines that contains the vector according to one embodiment proceed in general by making
information along the entire route. In one embodiment, a set of changes to the map tile layout, and then requesting the
before transmitting the set of polylines to the client, the front host system to display the new frame defined by those
end server reduces the total number of graphical data points changes. In one embodiment, the map display functionality at
that are transmitted to the client (e.g., using geometrical the client side may implemented in HTML code as follows:
10
operations well known to persons skilled in the art to elimi
nate from the set of polylines any data point that, when
eliminated, results in an error with respect to the full set of <div id="mapView style="position: relative; overflow: hidden;">
polylines no higher than a certain predetermined threshold, <div id="mapDiv style="position:absolute:
<table id="mapTable"><tbody>
Such as one or two pixels), and assigns each non-eliminated 15 <tro-tol-img src="images/bg.gif"></td
data point to a “group' that defines the Zoom level at which
the point becomes visually relevant (e.g., data points in group
“A” may be required to be displayed at every Zoom level,
while data points in group “B” are not required to be dis
played until the Zoom level has increased past the Zoom level
corresponding to a city-level view or finer, etc.). In this embodiment, JavaScript code on the site pans and
In one embodiment, initially, after a user enters a driving Zooms the map by placing appropriate map tiles in the <img
directions query, the map image 805 displays an overview of elements of mapTable, and by moving mapliv relative to
the entire selected route. The user may then Zoom in to parts mapView. Thus, the client-side algorithm in this embodiment
of the route to get more detailed views. 25 implements two primary graphical elements. The first ele
ment is a "clipping shape’ (typically a rectangle) through
In one embodiment, a billing mechanism is implemented which the user will see the map image 805, and which defines
for keeping track of the number of map views requested by a the shape of the user's map view. Solely for the purpose of
user, e.g., for keeping track of how much total map area a user explaining a client-side algorithm in one embodiment, an
has visited in relation to the map view. Referring to FIG. 8, as 30 arbitrary pixel of the clipping shape is assigned as its origin
mentioned earlier, a billing point 860 is defined at the center (for example the upper-left pixel in the case of a rectangular
of the map image (although billing point 860 is typically not clipping shape). The second element is a grid of tiles larger
a visible feature on map image 805). Thus, for example, if than and placed behind the clipping shape, such that only the
map image 805 comprises an area defined as 400 pixels wide part of the grid that intersects the clipping shape is visible to
and 400 pixels high, other billing points are defined in the 35 the user. For the remainder of this discussion of one embodi
horizontal and vertical directions at intervals of 400 pixels ment, it shall be assumed that this grid is rectangular, and that
(thereby creating a billing point grid). Thus, in one embodi it only changes size if and when the clipping shape does.
ment, every map view includes at least one transaction. If a Persons skilled in the art will recognize that variations of the
user initiates a panning operation, the billing point grid algorithms discussed herein exist where this property would
“moves' along with the map, triggering additional billing 40 not hold true.
transactions whenever a new billing point enters into the map Generally, the clipping shape remains fixed relative to the
view. For example, if the user pans the map image by 200 web browser's window 800, whereas client-side scripts
pixels to the right, a new billing point will come into view and according to aspects of the present invention will move the
trigger a new transaction. In one embodiment, a new transac location of the tile grid relative to the clipping shape, in
tion would also be triggered as a result of a Zooming operation 45 particular to pan the map image 805. FIG. 11 illustrates these
to display a previously unviewed map area at a given Zoom two graphical elements, while FIG. 12 depicts the result of
level. Transactions are reported by the client to the front-end processing the tile grid through the clipping shape for display
server 710/510 in one embodiment, which collects the trans on a web page. As shown in FIG. 11, a square 5-by-5 tile grid
action information from all users and uses is for contractual array 1100 comprises 25 individual tiles (each of which is
purposes with commercial providers of map information. 50 defined by red boundary lines). A square clipping shape 1110
(shown as a black rectangle) defines the subset of the tile grid
Client-Side Architecture and Algorithms that will be displayed as a map image on the clients web
browser. In FIG. 12, the “clipped’ tile grid array 1200 is
Embodiments of the present invention may be imple displayed with boundaries that are contiguous with the
mented using a wide range of technologies available in mod 55 boundaries of the clipping shape. As mentioned earlier, the
ern web browsers. A common graphical feature of certain map image 805 shown in FIG. 8 is also the result of a larger
embodiments is the ability to assemble a set of map tiles tile grid array that has been compared with a clipping shape.
behind a "clipping shape. In addition, the host technology at FIG. 13 illustrates the underlying tile grid coordinates and
the user's computing device 503 should allow for a reason clipping shape 1305 that may correspond with a set of dis
ably efficient, dynamic change to the display layout. Prefer 60 played images, such as those shown in FIGS. 11 and 12. In
ably, but not necessarily, the clients web browser should FIG. 13, each of the 25 tiles within 5-by-5 tile grid array 1300
perform Such dynamic changes using a double-buffered (or is represented by a unique set of tile coordinates.
similar) display to avoid flickering. For example, DHTML In one embodiment, the clipping shape is a rectangle of
uses a double-buffered display engine. In one embodiment fixed size 300x300 pixels, and positioned at the center of the
using DHTML, the browser executes script functions in 65 web page 800 as shown in FIG. 8. The clipping shape is
response to events such as user input, HTTP completions and implemented in one embodiment as a DIV element with style
timeouts. All changes made to the web page during script “overflow:hidden; position:relative' and id “mapView.” The
US 7,894.984 B2
17 18
tile grid is of fixed size 5-by-5 tiles. It is implemented as a resource locator') that depends only on the coordinate triplet
TABLE element with id “mapTable.” Each of mapTable's 25 of the tile (e.g., http://somedomain.com/
TD children contains a single IMG element, such that placing tiles?X=0&y=0&z=0). In general, web browsers manage their
a tile simply entails appropriately changing the SRC attribute caches by using an expiration time contained in the HTTP
of the IMG element. The mapTable element is the child of a 5 response containing each tile, and/or by comparing a last
DIV element with id “mapliv” and style="position:abso modified time of the tile in the browser's cache with that of the
lute.” The POSITION styles of mapView and mapDiv makes tile on the server side. Since the latter of these two methods
it possible to move the tile grid relative to the clipping shape requires a somewhat costly HTTP-request even when a
simply by changing the LEFT and TOP styles of the mapDiv. cached tile should be used, the HTTP server transmitting the
In general, the size of the tile grid relative to the size of the 10 tiles may be configured to report a lengthy expiration period,
clipping shape may depend on various implementation fac determined heuristically given the following trade-off. On
tors described below. Roughly speaking, the Smallest grid of one hand, a longer expiration period tends to minimize the
tiles that is at least twice the size (in both the width and height) number of HTTP requests needed for correctly cached tiles.
of the clipping shape (in pixels) may be used. Again depend On the other hand, a shorter expiration period makes it faster
ing on implementation choices, it may be necessary to 15 to promulgate new tiles to the web browsers when the large
dynamically change the size of the tile grid when the user map input rasters change (which in practice could occur to
changes the size or shape of the clipping shape. compensate for new road construction, or to take advantage of
For the purpose of the following exemplary discussion, A an improvement to the map drawing system that produces the
and B represent the width and height, respectively, (interm of rasters).
tiles) of the tile grid. Each position in the tile grid is assigned Alternatively, an implementation may add a version num
a coordinate pair (a,b) with the upper-left position having ber to the tile URLs (e.g. http://www.somedomain.com/
coordinates (0, 0), and the lower-right position having coor tiles?X=0&y=0&Z=0&v=1.0), configure the HTTP-server
dinate (A-1, B-1). During calculations, reference may be transmitting the tiles to report an expiration date as far as
made to positions (a, b) that fall outside the tile grid, i.e., possible into the future, and use Some other means of trans
where a<0 or Asa, or b-0 or Bisb. 25 mitting a new tile version number to the browser-side scripts
In each map image produced in one embodiment, the inter only when new tiles needs promulgation. This alternative
section between the clipping shape and the tile grid will equal system minimizes the HTTP requests issued by the browser
the full clipping shape. Such that only map tiles are exposed to for tiles already correctly cached, while giving full control of
the user by the clipping shape. In the remainder of this docu when new tiles should be used in place of old cached ones.
ment, this fact is denominated as the “intersection condition.” 30 This alternative, however, does tend to use more disk-space
With the above assumptions and definitions in place, one on the browser-side, as new tiles would not replace old ones in
may refer uniquely to any map view by the pixel coordinate the browser's cache. Note that embodiments of the present
triplet (x,y, z) of the map pixel exposed at the clipping shape’s invention do not depend on the use in particular of HTTP to
Origin. transport the tiles from a server to the web browser. Other
35 transport protocols Supported by the browser can be used
Initialization and Caching instead, such as HTTPS or FTP. As persons skilled in the art
will recognize, each transport protocol may require a slightly
In one embodiment, assuming that the user has requested different approach to caching tiles. Embodiments of the
an initial map view (x, y, z), and further assuming that the present invention may also implement heuristic algorithms,
corresponding map pixel (x,y, z) belongs to tile (XX.yy, Z), the 40 based on recent pan and Zoom operations, to predict which
client-side scripts proceed as follows. First, the tile grid is tiles are likely to be needed in the near future, and to use idle
placed relative to the clipping shape in any manner that does time and/or bandwidth to transfer those tiles into the brows
not violate the intersection condition. Second, (a,b) is defined er's cache. As an alternative, idle time and/or bandwidth may
as the position of the tile grid now containing the clipping be dedicated to updating positions in the tile grid that are not
shape origin. Third, for each position (a+a', b+b') in the tile 45 currently visible, and/or to request tiles that would be needed
grid intersecting the clipping shape, the tile (XX+a', yy+b', Z) if the user were to requests single-level Zoom transitions.
is placed. Fourth, and finally, the resulting frame is displayed. FIG. 14 illustrates a flowchart of one embodiment for
In general, placing a tile in a tile grid position in general transmitting map tiles to the web browser and caching the
will cause the browser to first check if the tile is present in its tiles locally at the web browser. At step 1400 the client
cache, and, if it is not, to issue the appropriate HTTP request 50 receives a location candidate (e.g., the user may have entered
for the needed tile. Depending on the particular host technol a location to be mapped into text entry field 825 shown in FIG.
ogy of a given implementation, this HTTP request may be 8 and then selected search button 830 in FIG. 8). Next, at step
performed synchronously or asynchronously. Embodiments 1405, the client computing device transmits the location can
of the present invention improve performance by encourag didate to a location server (e.g. location data server 1000
ing web browsers to cache individual tiles locally. Thus, when 55 shown in FIG. 10, location data server 520 shown in FIG. 5,
the browser-side scripts instruct the browser to display a or server 710 shown in FIG. 7). The location server then
particular tile, the browser will request the tile from an HTTP parses the location candidate at step 1410, resulting in the
server only when the tile is not already present in the brows generation of location data. At step 1415 the client receives
er's cache. In this way, embodiments of the present invention this location data from the location server, and at step 1420
benefit from separate map views containing overlapping 60 the client uses the received location data to create a tile
imagery, even if those separate views belong to different request. For each tile in the tile request, the client determines
browser sessions. Indeed, once a user has viewed an area whether the requested tile is already stored locally. Specifi
while on-line, the user may view that same area while off-line, cally, at step 1425, the client determines whether the
So long as only tiles already cached by the user's browser are requested tile is already stored locally.
needed. 65 If the tile is already stored locally, at step 1435 the client
To achieve this effect, the client-side scripts in one embodi retrieves the tile from its local memory. Alternatively, if the
ment identify each tile separately by a URL (“universal tile is not already stored locally, at step 1430 the client
US 7,894.984 B2
19 20
retrieves the tile from a tile server (such as tile server 515 another embodiment, instead of proceeding to step 1528, at
shown in FIG. 5). At step 1440, once it has been retrieved step 1530 the client requests a travel direction image overlay
from either local or remote tile storage, the requested tile is from the location server, based on the vector information that
displayed. Next, at step 1445, the next tile request is deter was calculated by the client at step 1520. In this embodiment,
mined. If more tiles remain in the request (a determination at step 1535, the location server creates a travel direction
that is made at step 1450), the process loops back to step 1425, image and transmits it to the client. Finally, at step 1540 in this
where a determination is made as to whether the newly embodiment, the client overlays the final travel direction
requested tile is already stored locally. Alternatively, if no image onto the map image. An exemplary displayed map
more tiles remain in the request, the process ends at step 1455. image with an overlay driving directions image is shown in
It should be noted that most target host technologies offer 10 FIG. 26.
access to asynchronous HTTP requests. This feature allows In certain implementations, specific web browsers (e.g.
client-side scripts to place a tile in the tile grid during a pan Mozilla/Firefox) may not be capable of drawing vector
transition, and then to start moving the tile grid before the tile graphics as described above. In Such implementations, a
actually arrives, thus temporarily exposing the wrong tile (or, resource such as geomap server 1010 shown in FIG. 10 may
alternatively, an empty space or a blank tile) to the user. In 15 generate an overlay bitmap image (e.g., for a polyline asso
general, depending on the particular requirements of a given ciated with a set of driving directions), and then the browser
implementation, such asynchronicity may be deemed prefer may composite this transparent image onto the map image.
able to the lengthy latency that might result from always Because the browser requests this image directly from the
waiting for all new tiles to arrive before moving the map. In geomap server 1010 in this example, the request is via a URL
some embodiments, it may be beneficial to replace old tiles in instead of a protocol buffer. The width and color of the line
the tile grid with a static tile unicolored with the maps back may be specified as command-line options to the geomap
ground color (and presumably almost always in the browser's Server 1010.
cache) before issuing the asynchronous request. Alterna
tively, a more complex implementation may wait until either Panning
the arrival of all new tiles or the expiration of some short 25
timeout period (whichever occurs first) before starting to In one embodiment, map image panning operations may be
move the map. In Such an implementation, the unicolored tile implemented as follows. First, Suppose that the user has
would be used only in the timeout case. requested a pan from one map view (x, y, z) to a new map view
(x, y, z) on the same Zoom level, and Suppose that the pan
Overlays 30 should be animated over n frames (where n=1 indicates that
the switch from the old to the new view should take place in
According to one embodiment, all additional information a single step, while higher values of n indicate that the Switch
beyond the fundamental map image (e.g., driving routes, should be presented as a Smoother, animated pan). Further,
specific locations) can be drawn as overlays and placed on top assume that the two map views are “close to each other
of a map on the client side. This approach can be used for all 35 relative to the size of the tile grid, in the sense that, along both
additional information, which means that the server does not the X and y axes, the distance between the two views plus the
need to draw any maps with specific additional information size of the clipping shape is Smaller than the size of the tile
on demand. Overlays can be used, for example, to display grid (in pixels).
location markers and routes, and to highlight streets and par With the above assumptions and definitions in mind, the
ticular areas. As persons skilled in the art will recognize, 40 operation of rotation down of the tile grid is defined as
overlays may be implemented in various ways (e.g., through taking the bottom row and making it the top row, and then
images or vectors). For example, client-side JavaScript may placing the resulting grid Such that the remaining positions
place HTML elements on top of the map display. In terms of retain their old location relative to the clipping shape. Like
the code Snippet described earlier, all overlay elements may wise, rotating up is defined as making the top row the bottom
be placed in mapliv, such that they move automatically with 45 one, rotating left as making the left column the right one,
the map when map div is moved. Some of these overlay and finally rotating right as making the right column the left
elements may already be in the HTML code (with one. These rotation operations are used in cases where mov
style="display: none') when the web page is first loaded, ing the tile grid would otherwise violate the intersection con
while others may be added later via JavaScript code. dition. There are of course other manners in which the same
FIG. 15 illustrates a flowchart that may be used according 50 effect could be achieved (for example by shifting each tile in
to one embodiment for displaying driving directions as an the grid one location), but above operational definitions have
overlay onto a map image. At step 1500, the client receives a been found to be efficient. The client-side scripts thus proceed
request for driving directions from a user in the manner that as follows. First, let (dx, dy)=(x,y)-(x, y), and let (a,b) be
has already been described. At step 1505, the client transmits the position of the tile grid now containing the clipping shape
the requested travel direction information to a location server. 55 origin. Second, for each position (a+a', b+b') that would inter
At step 1510 the location server parses the travel direction sect the clipping shape if the tile grid was moved by an offset
information, as described earlier in reference to the descrip of i(dx, dy)/n for any integeri between 1 and n, place the tile
tion of the functionality of the front end server. At step 1515, (XX+a', yy+b', z) in position ((a+a') mod A, (b+b') mod B).
the client receives textual and geographical travel direction Third, if necessary, rotate the tile grid until the intersection
data from the location server, as described earlier. At step 60 condition would not be violated by moving the tile grid by an
1520, the client determines the vectors required to display an offset of (dx, dy). Fourth, for eachibetween 1 and n, move the
overlay driving directions route trace onto a map image. At tile grid by an offset of (dx, dy)/n and display the resulting
step 1525, the client renders the fundamental map image (if frame. Depending on the host system’s efficiency, it may be
this step has not already been done) in accordance with the necessary to pause for some time period between frames.
flowchart of FIG. 14, as described earlier. In one embodiment, 65 Persons skilled in the art will recognize that the order of the
at step 1528, the client then renders the driving directions second and third steps in this process may be reversed. Also,
route trace as an overlay onto the fundamental map image. In note that a slight relaxation in the second step by assuming
US 7,894.984 B2
21 22
that n equals 1 would result in a near correct presentation image. It should be noted that transitions that combine pan
(although some intermediary frames may lack a few tiles ning with Zooming operations may be combined in certain
when the pan is neither horizontal nor vertical). Persons implementations.
skilled in the art will also recognize that the above process In general, Zooming is a more expensive operation than
will present a smooth pan along contiguous map imagery. panning in terms of tile updates, as every tile intersecting the
FIG. 16 depicts a flow chart for performing a map image clipping shape must be updated. For this reason, and because
panning operating according to one embodiment. At step a Smoothly animated Zoom requires costly image scaling
operations, one embodiment performs all Zooming in a single
1600, the client receives a command from the user indicating frame, simply by performing the initialization steps that were
a pan event (e.g., by activation of a directional control object 10 described earlier.
815 as shown in FIG. 8). At step 1605, the client virtually The following discussion outlines an approach to present
moves the clipping viewer relative to the underlying map ing a Smoothly animated Zoom operation to the user accord
tiles. Then, at step 1610, the client determines the location of ing to one embodiment, which is feasible in certain exem
newly needed tiles as a result of the pan operation. Once this plary host technologies (e.g., Flash and Java Applets). For
has been determined, at step 1615 the client uses this location 15 simplicity, assume that the Scaling factor difference between
data to create a tile request. Finally, at step 1525, the client the two Zoom levels Z, and z is exactly 2, that z=z+1, and that
obtains any required tiles in accordance to the process illus it is desired to present the transition overn animation frames.
trated in FIG. 14 and described earlier. In this discussion, a “final frame' refers to the frame that
FIGS. 17 through 21 illustrate an exemplary process of would be produced by simply Zooming in a single frame using
panning west by /3 of the clipping shape’s width according to the initialization steps that were described above. Further, let
one embodiment. FIG. 17 depicts the state of the map image s (the scaling factor) equal the nth root of 2.
and tile grid before the tiles are updated in the second step of With these definitions and assumptions in mind, one
the process described earlier, while FIG. 18 depicts the state embodiment of a Zooming algorithm proceeds as follows.
after this updating step has been completed. FIG. 19 depicts First, the final frame is assembled (but not displayed). Sec
the state after one "rotate right” operation has been performed 25 ond, for i between 1 and n-1: (a) the tiles needed for the final
according to the third step described earlier, while FIG. 20 frame are scaled by a factor of s(n-i); (b) the scaled tiles are
depicts the state after a few frames have been displayed in the placed Such that the anchor is correctly located; and (c), the
fourth step. Finally, FIG. 21 depicts the final state after the resulting frame is displayed, and a pause is included if appro
panning process is complete. priate. Third, the final frame is displayed.
Persons skilled in the art will recognize that a larger grid in
30 Alternatively, if z-Z-1, the tiles of the current view may be
general allows for longer pans to be presented Smoothly using scaled instead of the tiles of the final view, as follows. First, as
the above process. In one embodiment, the implementation above, the final frame is assembled (but not displayed). Sec
choice of using a grid slightly more than twice the size of the ond, for i between 1 and n-1: (a) the tiles of the current view
clipping shape allows for Smooth pans of up to the size of the are scaled by a factor of s(i); (b) the scaled tiles are placed
current map view. To perform longer pans without increasing 35 Such that the anchor is correctly located; and (c), the final
the size of the tile grid, the entire pan operation may simply be frame is displayed, and a pause is included if appropriate.
divided into a series of Smaller pan operations, although this Note that in the second step (part (a)) of both of the above
approach may result in a slightly less Smooth presentation. implementations, Scaling is only required for those tiles that
will eventually be exposed through the clipping shape after
The above exemplary panning operation algorithm updates 40 part (b) of the second step is performed. Note also that the first
all necessary tiles before presenting even the first frame of the step of the second implementation can be deferred until the
animation. This approach may introduce a small latency third step. In both of these implementations, all intermediary
between the time that the user makes a request and time that frames are produced using the tiles of the higher Zoom-level.
the map actually starts. To overcome this, an implementation as fewer tiles are needed in higher Zoom levels to cover the
may choose to divide an n-frame pan into, say, in separate 45 same geographic area. A more involved alternative imple
1-frame pans. This technique alone, however, may result in a mentation seeks to produce Some of the intermediary frames
less Smooth presentation, as the amount of work to produce by using tiles from the lower Zoom-level, or by alpha-blend
each frame may vary significantly with the number of tiles ing scaled tiles from both the current and final frames to
requiring update. A more Sophisticated implementation over produce a “morphing’-like effect. Also, Zoom transitions
comes this problem by predictively updating tiles needed for 50 across multiple Zoom levels may be implemented as a series
future frames to even out the number of tiles requiring update of single-level transitions.
among the frames. FIG.22 depicts an exemplary flow chart for implementing
a Zooming operation according to one embodiment. At step
Zooming 2200, the client receives a Zoom action event (e.g., by activa
55 tion of a Zoom control object 820, as shown in FIG. 8). At step
In one embodiment, “Zooming refers to the transition 2205, the client determines the center of the Zoomed display.
between two views (x, y, z) and (x, y, z), where Zzz', and Then, at step 2210, the client uses the determined center
where the lat/lon values corresponding to the two views are location data to create a tile request with the new Zoom level.
close relative to the size of the clipping rectangle. The fol Finally, the client renders the Zoomed map according to the
lowing discussion focuses on Zoom operations that are “ver 60 process described earlier, with reference to FIG. 14.
tical around a lat/lon “anchor in the sense that the pixel
containing the anchor occupies in each of the two views the Sliding and Jumping
same pixel of the clipping shape. Typically, the anchor of a
Zoom operation might be the center of the clipping shape, but The following discussion considers transitions between
it could also be the lat/lon of a location marker (such as 65 map views that are too distant for Smooth Zooming and pan
marker 845 shown in FIG. 8), the lat/lon corresponding to a ning alone. For example, a current map view may display a
pixel selected by the user, or any other location within a map street in Berkeley, Calif., but the user may select a navigation
US 7,894.984 B2
23 24
shortcut or request a view of a street in downtown Manhattan, a feature that helps users to identify the locations pointed to
N.Y. Two exemplary approaches to this situation are pre by the location markers in a more precise manner, and also
sented, denominated as 'sliding and jumping.” helps to prevent multiple markers from interfering with each
In accordance with the "sliding approach of one embodi other. In addition, location markers may be represented by
ment, client-side Scripts assemble the final view and (typi PNG files with an alpha channel containing anti-aliased
cally utilizing a separate tile grid) Smoothly slide it onto the markers overlaid onto the map image. FIG. 23 depicts an
current view from the direction of the new view relative to the exemplary flow chart for overlaying a set of location markers
old view. Alternatively, in accordance with the jumping onto a map image according to one embodiment of the present
approach of one embodiment, client-side scripts first Zoom invention. At step 2300, the client receives a request from the
out, then pan, and finally Zoom back down the target view. 10 user for location-based information. Then, at step 2305, the
The client-side scripts Zoom out to and conduct the pan at the client transmits the request to a location server in the manner
lowest Zoom level that makes the pan short enough (in pixels) that has been described previously. At step 2310, the location
for the requirements of each particular implementation. A server parses the request. Next, at step 2315, the client
more sophisticated embodiment converts this “box-shaped receives location-based information from the location server.
motion (i.e., Zoom up, pan, Zoom down) into a smoother, 15 At step 2320, the client translates this information to a set of
curve shaped motion. Persons skilled in the art will recognize pixel information. Then, at step 2325, the client retrieves
that the jumping approach requires a much greater number marker and shadow images (either locally or from the remote
of tiles and more computing resources than does the 'sliding location server) to be overlaid or otherwise placed onto the
approach. map image. At steps 2330 and 2335 (which can obviously be
reversed if so desired for a particular implementation), the
Resizing client places shadows and markers, respectively, onto the map
image (e.g., by overlaying them onto the map image). FIG. 24
Depending primarily on the web site surrounding the map depicts an exemplary map display web page with multiple
view, a user may request that the map view change size and/or overlaid location markers (denominated as 'A' through “J”),
shape. Depending on an implementation's choice of how to 25 displaying the results of an exemplary request in text field 825
relate the size of the tile grid to the size of the clipping shape, for “great sushi in New York’) according to aspects of the
this request in turn may necessitate resizing the tile grid. present invention.
There are numerous possible implementations for this opera As another example of overlaid images, FIG. 27 depicts an
tion, including but not limited to the following. Assume that exemplary map display web page with an overlaid driving
the current view is (x, y, z), that the corresponding pixel 30 direction route trace according to aspects of the present inven
belongs to tile (XX, yy, Z), and that the resizing of the clipping tion. FIG. 27 includes a first text entry field 825 for indicating
shape should take place around its origin. Then, the first step the desired the start address, a second text entry field 828 for
is to resiZefreshape the clipping shape. Next, if necessary, the indicating the end start address, a highlighted overlaid route
size of the tile grid is moved and increased (e.g., by adding a trace 2710 corresponding to the desired driving directions, a
row to the bottom and/or columns to the right) to the smallest 35 corresponding set of textual driving directions 2730, a loca
size necessary So as not to violate the intersection condition. tion marker 845 and its shadow 855 indicating the end point
Next, let (a,b) be the position of the tile grid now containing of the driving directions, a similar location marker and its
the clipping shape origin. As the next step, for each position shadow 855 indicating the start point of the driving directions,
(a+a', b+b') in the tile grid intersecting the clipping shape, and an information window 2720 and its shadow 855 display
place the tile (XX--a', yy+b', z). Next, the frame is displayed. 40 ing a detailed map view 2725 for a specific selected maneuver
Finally, if necessary, the size of the tile grid is increased (e.g., (e.g., “Take the Moffett Blvd.” exit") along the route. Simi
by adding rows to the bottom and/or columns to the right) larly, FIG. 28 depicts an exemplary map display web page
Such that the tile grid is again at least twice the size of the with an overlaid area boundary trace according to aspects of
clipping shape. The resizing transition can be animated using the present invention.
the same techniques as animating pan transitions, as 45 FIG. 29 depicts an exemplary flow chart for overlaying a
described earlier. Also, note that, if desired for a particular set of information windows (such as information window 840
implementation, the final step of increasing the tile grid may and its shadow 855 shown in FIG. 8) onto a map image
be combined into the initial step of moving and increasing the according to one embodiment of the present invention. At step
size of the tile grid. Persons skilled in the art will recognize 2900, the client receives a user selection of location informa
that the origin has been chosen arbitrarily in the above dis 50 tion (e.g., if a user selects a driving maneuver that was gen
cussion, and that one cannot count on this condition being erated as a result of a driving direction query). At step 2905,
true in general. However, the steps described above may be the client creates corresponding HTML code based on the
easily adjusted by persons skilled in the art to account for this location information. For example, the HTML code may be
additional complexity. created by using XSLT (a common script language available
55 in Internet Explorer or other commercially available web
Location Markers browsers) to convert XML code containing the location infor
mation into HTML. The created HTML code may then be
As mentioned earlier, location markers according to one inserted into a table, such as HTML table 2605 shown in FIG.
embodiment (along with other objects, such as information 26A. Then, at step 2910, the client obtains a set of pre
windows) can be overlaid onto the map image with corre 60 rendered pieces (e.g., a first corner piece 2610, a second
sponding shadows, which makes it easier to identify their corner piece 2612, a third corner piece 2614, a fourth corner
relative locations. In one embodiment, the shadows can be piece 2615, and a pointing piece 2622 as shown in FIG. 26A)
drawn to appear as if the location markers are standing verti for the fixed portions of the boundary of the HTML window
cally on a map that is tilted at a 45° angle, stretched by a factor that will Subsequently be overlaid onto the map image. At step
of the square root of two, and projected back onto a vertical 65 2915, the client connects these pre-rendered pieces to create
plane. Such shadows can make location the markers appear to the non-fixed portions of the boundaries of the information
have been placed on the map in a three-dimensional manner, window. For example, the exterior boundary of the informa
US 7,894.984 B2
25 26
tion window may be determined by generating a line between step 3005, the client determines the center of the map image
the pre-rendered pieces, such as, e.g., via connected line window. Next, at step 3010, the client determines whether the
2620, as shown in FIG. 26A. Then, at step 2920, as discussed window size has been increased. If so, at step 3025, the client
below, the client determines and obtains a set of pre-rendered determines the identity of any new map tiles that may be
pieces that will Subsequently be overlaid onto the map image required to fill the new additional space, and at step 3030 the
to generate the fixed portion of the information window client requests these new tiles, either from its local cache or
shadow image. At step 2922, as also discussed below, the from a remote server. At step 3035, the client places the new
client connects the pre-rendered pieces to fill in the rest of the tiles in a tile table array and displays the new map image.
information window shadow image. Alternatively, if at step 3010 the client determines that the
FIG. 26B shows an example of an information window 10
window size has been decreased, then at step 3015 the client
shadow 2625 (also shown as element 855 in FIGS. 8 and 27) proportionately reduces the size of the clipping shape win
for use with an information window, along with its elemen dow. Finally, at step 3020, the client re-centers the clipping
tary components. The shadow image 2625 may be dynami shape window on the map image center.
cally created Such that it corresponds proportionately to the
dynamic size of the information window 2600 created as 15
High-Resolution Printing
described above. An exemplary method for dynamically cre
ating a shadow image 2625 may proceed as follows, with
reference to FIG. 26B. The height of the shadow image 2625 Printing a map view from conventional web map sites
may be set as one-half the height of the information window generally produces poor output, as the map views are pre
2600. As shown in FIG. 26B, the size of HTML table shadow sented in screen resolution, which is often an order of mag
2625 is determined such that it can contain the shadow at half nitude lower than that of modern printers. Some host tech
the height, including the blurred outline of the shadow (if nologies, however (including DHTML as used in one
present). The angled vertical lines of the information window embodiment), facilitate the assembly of map views using map
(e.g., line 2635) may be created by skewing them at a prede tiles at a resolution Suitable for printing. Thus, to achieve
termined angle, e.g., a 45-degree angle, to match the isomet 25 higher-quality hardcopies of map images in one embodiment,
ric view. For example, off-set line 2635 is set at a 45-degree map views can be re-assembled using print resolution tiles.
angle. These angled lines may be created, either at the client Because one embodiment uses HTMLIMG elements to place
or at the server, by using a clipping rectangle to display only tiles in the tile grid, two images of the same map tile, with one
the required portion of a pre-rendered angled shadow line. (e.g., Screen tile.gif) at size 128x128 pixels, and the other
The client also determines a set of pre-rendered pieces for the 30 (e.g., print tile.gif) of size 512x512 pixels may be used for
corners of the shadow image and the pointing piece. In FIG. display and printing purposes, respectively. FIG. 31 depicts
26B, for example, an information window shadow box corner an exemplary set of map image tiles of different resolutions
piece 2640 and an information window shadow pointing for high-quality printing of map images according to one
piece 2645 may be obtained, either from a server or locally. embodiment of the present invention. Persons skilled in the
After determining the boundaries of the shadow image based 35 art will note that the third image shown in FIG.31 appears as
on the size of the information window 2600, and after obtain a high-resolution version of the first image. Using this obser
ing and clipping the appropriate pre-rendered pieces, then the Vation, in response to a print request from a user, the current
rest of the connecting lines may be determined and drawn in. map view may be re-assembled using print-resolution tiles to
The shadow image may also be filled to create a shadow achieve a Superior print output.
like appearance, such as shown in FIG. 26B. To further 40 Software and/or hardware for implementing the steps of
enhance the shadow-like appearance, the portion of the the flowcharts described and illustrated in this document may
shadow image closest to the bottom of the information win be implemented on the computing device 503 and/or any
dow may be the darkest and/or sharpest, while gradually combination with the servers 510, 515, and 520 or other
lightening and/or blurring the fill the farther away the portion computing devices or servers that are not shown, Such as by an
of the shadow image is located from the bottom of the infor 45 Internet service provider server that is connected between the
mation window. computing device 503 and the network 505. Moreover, the
Referring back to FIG. 29, at step 2925, the client overlays blocks illustrated may be performed in different orders and
the shadow onto the map image. Finally, at step 2930, the are not required to be performed in the exact sequence illus
client overlays the information window onto the map image. trated. Furthermore, non-dependent acts may be imple
As can be seen from the examples in FIGS. 8, 26A, 26B and 50 mented in parallel.
27, this method produces an information window that, when It will also be apparent to one of ordinary skill in the art that
displayed on a digital map along with its shadow, appears to aspects of embodiments, as described above, may be imple
be three-dimensional in its entirety. Optionally, the three mented in many different forms of software, firmware, and
dimensional appearance may be enhanced by placing mul hardware in the implementations illustrated in the figures.
tiple tile windows such that information windows are placed 55 The actual software code or specialized control hardware
starting from North to South, such that a sense of depth is also used to implement aspects consistent with the principles of
provided. Other options are available. Such as placing the the invention is not limiting of the invention. Thus, the opera
information windows from East to West. This method may tion and behavior of certain aspects of the embodiments were
also be used when placing more than one marker on the map. described without reference to the specific software code it
Referring to FIG. 25, a similar technique may be employed 60 being understood that one of ordinary skill in the art would be
to generate the angled shadow 2505 for a location marker able to design Software and control hardware to implement
2SOO. the aspects based on the description herein. Further, certain
FIG. 30 depicts an exemplary flow chart for resizing a map portions of embodiments may be implemented as “logic' that
image display window according to one embodiment of the performs one or more functions. This logic may include hard
present invention. At step 3000, the client receives a notifica 65 ware, Such as an application specific integrated circuit or a
tion of a change in the map image display window size (e.g., field programmable gate array, Software, or a combination of
as a result of a window resizing action by the user). Then, at hardware and software.
US 7,894.984 B2
27 28
Certain exemplary embodiments have been described and 6. A computer-readable medium encoded with instruc
shown in the accompanying drawings. It is to be understood, tions, that when executed by a processor, cause the processor
however, that such embodiments are merely illustrative and to display a map, the instructions comprising instructions for:
not restrictive. The disclosure should not be limited to the receiving a set of map tiles from a map tile server;
specific constructions and arrangements explicitly disclosed assembling the received map tiles into a tile grid;
because various other modifications will occur to those ordi
narily skilled in the art. aligning the tile grid relative to a clipping shape;
What is claimed is: receiving a change to the clipping shape from the user;
1. A method of displaying a map, comprising: responsive to the change to the clipping shape, changing a
receiving a set of map tiles from a map tile server, 10 size of the tile grid; and
assembling the received map tiles into a tile grid; displaying the tile grid through the clipping shape.
aligning the tile grid relative to a clipping shape; 7. The computer-readable medium of claim 6, wherein the
receiving a change to the clipping shape from the user; size of the tile grid is at least twice a size of the clipping shape.
responsive to the change to the clipping shape, changing a 8. The computer-readable medium of claim 6, wherein the
size of the tile grid; and 15
change to the clipping shape is a change in a shape of the
displaying the tile grid through the clipping shape. clipping shape.
2. The method of claim 1, wherein the size of the tile grid 9. The computer-readable medium of claim 6, wherein the
is at least twice a size of the clipping shape. change to the clipping shape is a change in a size of the
3. The method of claim 1, wherein the change to the clip clipping shape.
ping shape is a change in a shape of the clipping shape.
4. The method of claim 1, wherein the change to the clip 10. The computer-readable medium of claim9, wherein the
ping shape is a change in a size of the clipping shape. change in the size of the clipping shape is responsive to a
5. The method of claim 4, wherein the change in the size of change in a size of a window displaying the map.
the clipping shape is responsive to a change in a size of a
window displaying the map.

You might also like