U.S. patent application number 15/018047 was filed with the patent office on 2018-03-01 for direction list.
The applicant listed for this patent is Apple Inc.. Invention is credited to Alexandre Carlhian, Maxwell O. Drukman, Edouard D. Godfrey.
Application Number | 20180058874 15/018047 |
Document ID | / |
Family ID | 52006164 |
Filed Date | 2018-03-01 |
United States Patent
Application |
20180058874 |
Kind Code |
A9 |
Carlhian; Alexandre ; et
al. |
March 1, 2018 |
Direction List
Abstract
A mapping application that intelligently places distance labels
along a route in a map is disclosed. A distance label placed at a
particular position of the route shows the distance to the
particular location from the starting point of the route. Distance
labels allow the user of the map to quickly appreciate the
distances between the various points of interest (e.g., maneuvers)
along the route. In some mapping applications that display the
route as a list of driving directions, the distance labels are
placed alongside the list of driving directions, and each distance
label is associated with a maneuver in the list of directions.
Inventors: |
Carlhian; Alexandre; (Paris,
FR) ; Godfrey; Edouard D.; (Paris, FR) ;
Drukman; Maxwell O.; (San Francisco, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Apple Inc. |
Cupertino |
CA |
US |
|
|
Prior
Publication: |
|
Document Identifier |
Publication Date |
|
US 20160252361 A1 |
September 1, 2016 |
|
|
Family ID: |
52006164 |
Appl. No.: |
15/018047 |
Filed: |
February 8, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14056443 |
Oct 17, 2013 |
9273980 |
|
|
15018047 |
|
|
|
|
61832905 |
Jun 9, 2013 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G01C 21/3632 20130101;
G01S 19/42 20130101; G01C 21/3626 20130101 |
International
Class: |
G01C 21/36 20060101
G01C021/36; G01S 19/42 20060101 G01S019/42 |
Claims
1-42. (canceled)
43. A method comprising: displaying, at a mobile device, a list of
directions for traveling on a route from a starting location to an
ending location, the route partitioned into a plurality of
segments, the list of directions comprising a plurality of items
representing the plurality of segments; altering an appearance of a
item in the list of directions corresponding to a particular
segment of the route when the mobile device is traveling along the
particular segment; and refreshing the list of directions after two
or more of the items in the list of directions have changed their
appearances.
44. The method of claim 43, wherein each item in the list of
directions displays a length of the segment represented by the
item.
45. The method of claim 44, wherein the item corresponding to the
particular segment includes a distance between a current position
of the mobile device and a position of a step that terminates the
particular segment.
46. The method of claim 43, wherein the set of instructions for
altering the appearance of the item comprises a set of instructions
for making the item less conspicuous than other items in the list
of directions.
47. The method of claim 43, wherein refreshing the list of
directions comprises maintaining the item in display with its
altered appearance for a predetermined period of time after the
maneuver is executed before scrolling the list of directions.
48. The method of claim 47, wherein the set of instructions for
refreshing the displayed list of directions further comprises
adding new graphical items to the list of directions to represent
maneuvers in the route that were not previously displayed as part
of the list of directions.
49. The method of claim 47, wherein refreshing the displayed list
of directions is animated such that the removed graphical items
disappear gradually from display and the added graphical items
appear gradually into display.
50. The method of claim 47, wherein altering the appearance of the
graphical item comprises making the graphical item less conspicuous
than other graphical items in the plurality of graphical items.
51. A non-transitory computer readable medium storing a computer
program for execution by at least one processor of a mobile device,
the computer program comprising sets of instructions for:
displaying a list of directions for traveling on a route from a
starting location to an ending location, the route partitioned into
a plurality of segments, the list of directions comprising a
plurality of items representing the plurality of segments; altering
an appearance of a item in the list of directions corresponding to
a particular segment of the route when the mobile device is
traveling along the particular segment; and refreshing the list of
directions after two or more of the items in the list of directions
have changed their appearances.
52. The non-transitory computer readable medium of claim 51,
wherein each step comprises a traffic maneuver that is required to
continue traveling on the route.
53. The non-transitory computer readable medium of claim 51,
wherein the set of instructions for altering the appearance of the
item comprises a set of instructions for making the item less
conspicuous than other items in the list of directions.
54. The non-transitory computer readable medium of claim 51,
wherein the set of instructions for refreshing the list of
directions comprises a set of instructions for maintaining the item
in display with its altered appearance for a predetermined period
of time after the maneuver is executed before scrolling the list of
directions.
55. The non-transitory computer readable medium of claim 54,
wherein the set of instructions for refreshing the displayed list
of directions further comprises a set of instructions for adding
new graphical items to the list of directions to represent
maneuvers in the route that were not previously displayed as part
of the list of directions.
56. The non-transitory computer readable medium of claim 54,
wherein the set of instructions for refreshing the displayed list
of directions is animated such that the removed graphical items
disappear gradually from display and the added graphical items
appear gradually into display.
57. The non-transitory computer readable medium of claim 54,
wherein the set of instructions for altering the appearance of the
graphical item comprises a set of instructions for making the
graphical item less conspicuous than other graphical items in the
plurality of graphical items.
58. A mobile device comprising: a set of processing units; a
non-transitory computer readable medium storing a program for
execution by the set of processing units, the program comprising
sets of instructions for: displaying a list of directions for
traveling on a route from a starting location to an ending
location, the route partitioned into a plurality of segments, the
list of directions comprising a plurality of items representing the
plurality of segments; altering an appearance of a item in the list
of directions corresponding to a particular segment of the route
when the mobile device is traveling along the particular segment;
and refreshing the list of directions after two or more of the
items in the list of directions have changed their appearances.
59. The mobile device of claim 58, wherein the plurality of
maneuvers comprises one or more notifications for traffic turns and
one notification for the ending location.
60. The mobile device of claim 58, wherein a maneuver is a movement
that a carrier of the mobile device is required to perform in order
to continue traveling on the route.
61. The mobile device claim 58, wherein a maneuver is a driving
direction.
62. The mobile device of claim 58, wherein the physical position of
the mobile device is supplied by a global positioning system.
Description
CLAIM OF BENEFIT TO PRIOR APPLICATIONS
[0001] This present Application claims the benefit of U.S.
Provisional Patent Application 61/832,905, filed Jun. 9, 2013. U.S.
Provisional Patent Applications 61/832,905 is incorporated herein
by reference.
BACKGROUND
[0002] Many map-based applications available today are designed for
a variety of different devices (e.g., desktops, laptops, tablet
devices, smartphones, handheld global positioning system (GPS)
receivers, etc.) and for various different purposes (e.g.,
navigation, browsing, sports, etc.). In addition to presenting
two-dimensional (2D) maps or three-dimensional (3D) maps, these
applications generally have the capability of computing, when given
a starting location and a destination location, one or more routes.
Such a route generally consists of a number of driving directions
or traffic maneuvers that a driver or a traveler can follow in
order to reach the destination. These directions or maneuvers are
usually presented graphically within the map (2D or 3D), and/or in
a list of directions.
[0003] Many mapping applications use both map and list of
directions to present the route to the user. Presenting the route
in a 2D or 3D map is advantageous because a user can quickly and
easily visualize his journey spatially by viewing the map. However,
a map is generally not the best setting for presenting all of the
necessary information of the route, since these information may
clutter the view of the map and visually overload the user. Many
mapping applications therefore relay on the list of directions to
present all of the necessary information regarding each step or
maneuver of the route.
[0004] Most mapping applications present the list of directions as
a series of textual items. However, these textual items are usually
difficult to follow visually, especially when the user of the
application is driving while trying to follow the route.
Furthermore, the user of the list of directions often finds it
difficult to correlate the information on the list of directions
with information presented graphically in the map. This is
especially problematic for the user of the map, who often needs to
turn to the list of directions in order to find out the distances
between the various points of interest on the route.
SUMMARY
[0005] Some embodiments provide a mobile device that displays a
list of traveling maneuvers or driving directions according to a
route from a start location to a destination location. The
displayed list includes a series of graphical items that each
corresponds to a maneuver in the route. The displayed list of
driving directions is updated dynamically according to the current
position of the mobile device. Each maneuver actually taken or
traveled causes the mobile device to display the item that
corresponds to the taken maneuver differently. After a number of
maneuvers have been taken, the graphical items that correspond to
the taken maneuvers are removed from display and new maneuvers are
brought into view.
[0006] Some embodiments provide a mapping or navigation application
that intelligently places distance labels along a route in a map. A
distance label placed at a particular position of the route shows
the distance to the particular location from the starting point of
the route. Distance labels allow the user of the map to quickly
appreciate the distances between the various points of interest
(e.g., maneuvers) along the route. In some embodiments that display
the route as a list of driving directions, the distance labels are
placed alongside the list of driving directions, and each distance
label is associated with a maneuver in the list of directions.
[0007] In some embodiments, individual steps or maneuvers in the
list of directions are selectable items in the GUI. The selection
of a GUI item that corresponds to a particular maneuver in the list
of directions causes the view of the map to move toward a location
on the route that corresponds to the particular maneuver. When the
user selects a new maneuver from the list of directions, some
embodiments animate a transition from a previous view for a
previously selected maneuver to a new view for the newly selected
maneuver. In some embodiments, the transition includes zooming out
to temporarily include both the previously selected maneuver and
the newly selected maneuver before zooming in at the newly selected
maneuver.
[0008] The preceding Summary is intended to serve as a brief
introduction to some embodiments of the invention. It is not meant
to be an introduction or overview of all inventive subject matter
disclosed in this document. The Detailed Description that follows
and the Drawings that are referred to in the Detailed Description
will further describe the embodiments described in the Summary as
well as other embodiments. Accordingly, to understand all the
embodiments described by this document, a full review of the
Summary, Detailed Description and the Drawings is needed.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The novel features of the invention are set forth in the
appended claims. However, for purpose of explanation, several
embodiments of the invention are set forth in the following
figures.
[0010] FIG. 1 illustrates a user interface for a mobile device that
displays a list of directions.
[0011] FIG. 2 illustrates the creation of a list of directions by a
mapping application running on a mobile device.
[0012] FIG. 3 illustrates the correspondence between the dynamic
display of the list of directions in a mobile device and the
current position of the mobile device.
[0013] FIG. 4 illustrates the dynamic display of the list of
directions during navigation operations by a mobile device.
[0014] FIG. 5 conceptually illustrates a process for dynamically
updating a list of directions.
[0015] FIG. 6 illustrates the placement of distance labels on a
route in a map.
[0016] FIG. 7 illustrates distance labels that are placed along a
list of directions and along a route in the map.
[0017] FIG. 8 conceptually illustrates a process of some
embodiments for determining the placement of the distance labels
along a route.
[0018] FIG. 9 illustrates a process for computing a desirable
segment unit value as well as a suitable number of segments for the
placement of distance labels along the route.
[0019] FIG. 10 illustrates the placement of distance labels based
on where the maneuvers are in the route.
[0020] FIG. 11 illustrates a printed list of directions that
includes distance labels.
[0021] FIG. 12 illustrates a mapping application in which the
distance labels along the route in the map window, along the list
of directions, and in the print out are not the same.
[0022] FIG. 13 illustrates a mapping application that displays
distance labels only along a list of directions but not along a
route in a map.
[0023] FIG. 14 illustrates a mapping application that includes
distance labels along with a print-out of a list of directions but
does not display distance labels at all in its GUI.
[0024] FIG. 15 illustrates a GUI of a mapping application that
displays the distance labels along a route in a map window and
includes the distance labels in a print-out of a list of
directions, but does not display the distance labels along the list
of directions within the GUI.
[0025] FIGS. 16-17 illustrate a mapping application that changes
zoom level as it changes the view of the map due to the selection
of a maneuver from a list of directions.
[0026] FIGS. 18-19 illustrate changing the view of the map due to
the selection of a maneuver item that is far away from the original
view.
[0027] FIGS. 20-21 illustrate changing the view of the map due to
the selection of a maneuver item that is near the original
view.
[0028] FIG. 22 conceptually illustrates a process for transitioning
the view of the map when a maneuver in the list of directions is
selected.
[0029] FIG. 23 is an example of an architecture of a mobile
computing device of some embodiments.
[0030] FIG. 24 conceptually illustrates an example of an electronic
system with which some embodiments of the invention are
implemented.
[0031] FIG. 25 illustrates a map service operating environment,
according to some embodiments.
DETAILED DESCRIPTION
[0032] In the following description, numerous details are set forth
for the purpose of explanation. However, one of ordinary skill in
the art will realize that the invention may be practiced without
the use of these specific details. In other instances, well-known
structures and devices are shown in block diagram form in order not
to obscure the description of the invention with unnecessary
detail.
[0033] In order to present traveling directions in a way that is
easy for a user to follow while driving, some embodiments provide a
mobile device that presents a list of directions that is
dynamically updated according to the present position of the mobile
device. To aid the user's spatial comprehension of the route, some
embodiments present a series of distance labels along the route in
the map as well as in a list of directions. And to better integrate
the user's understanding of the route from the list of directions
and from the route on the map, some embodiments change the view of
the map to match the user's selection of a particular item in the
list of directions and to animate the change in the view.
[0034] Several more detailed embodiments of the invention are
described below. Section I describes list of directions that are
updated dynamically according to the present position of a mobile
device. Section II describes distance labels that are presented
along a route in several formats. Section III describes a mapping
application that animate changes in view of the map when the user
selects a particular item in the list of directions. Section IV
describes an electronic system with which some embodiments of the
invention are implemented. Section V describes a mapping service
environment within which some embodiments of the invention
operate.
I. Dynamic Directions
[0035] Some embodiments provide a mobile device that displays a
list of steps, traveling maneuvers, or driving directions according
to a route from a start location to a destination location. The
displayed list of includes a series of graphical items that each
corresponds to a step or maneuver in the route. The displayed list
of driving directions is updated dynamically according to the
current position of the mobile device (or the position of the
vehicle or person carrying the device). Each maneuver actually
taken or traveled causes the mobile device to display the item that
corresponds to the taken maneuver differently (e.g., in a different
color). After a number of maneuvers have been taken, the graphical
items that correspond to the taken maneuvers are removed from
display and new maneuvers are brought into view.
[0036] For some embodiments, FIG. 1 illustrates a user interface
for a mobile device 100 that displays a list of directions 110. The
list of directions 110 is a set of instructions for taking a
traveler from a point of origin (or a starting location) to a point
of destination (or an ending location) on a suggested route. The
list of directions 110 includes a list of entries, each entry
corresponding to a direction, instruction or a maneuver for the
traveler to follow according to the route. A traveler is a person
or a vehicle traveling on the road whose position is used as the
current position for the mapping or navigation application. In some
embodiments, the traveler is carrying the mobile device 100 and
thus the current position of the mobile device is the current
position of the traveler. A maneuver in the list of directions in
some embodiments can be a traffic turn, entrance into a freeway,
continuing on a freeway, exit from a freeway, departure from the
point of origin, arrival at the point of destination, or other
actions that a driver or a traveler needs to take in order to
follow the route to the destination.
[0037] In some embodiments, the display of the list of directions
is controlled by a route inspection engine that automatically steps
through items in the list of directions when position indication
functionality of the mobile device is activated. The mobile device
100 in some of these embodiments is able to determine its own
position and then uses that position to dynamically update the
display of the list of directions 110. In some embodiments, the
mobile device 100 automatically scrolls through individual entries
of the list of directions according to its own instantaneous actual
location (and hence actual location of the traveler carrying the
mobile device).
[0038] The mobile device 100 can be any mobile computing and
communication devices such as mobile phones, hand-held navigation
devices, laptops, or PDAs. It is a device capable of determining
its own location and relaying that information to an application
running on the device. In some embodiments, the mobile device 100
is equipped with global positioning system (GPS) capabilities for
determining its own position. In some embodiments, the mobile
device 100 runs applications that use the location information of
the mobile device to perform turn-by-turn navigation or mapping
operations. In some embodiments, the mobile device acts as a client
device to a mapping service and receives mapping information and
other mapping related data from the mapping service.
[0039] FIG. 1 illustrates the dynamic display of the list of
directions 110 by the mobile device 100 in four stages 101-104. At
the first stage 101, the mobile device 100 is displaying graphical
items 111-114, which graphically represent four entries in the list
of directions 110. The mobile device 100 is configured to display
at most four maneuvers at a time, even though the list of
directions 110 can include more than four entries.
[0040] Except for the first entry, each entry in the list of
directions 110 describes a maneuver that is to be performed some
distance after a previous maneuver. For example, the maneuver
(represented by graphical item) 114 is to be performed 0.7 miles
after the maneuver 113, the maneuver 113 is to be performed 0.2
miles after maneuver 112, the maneuver 112 is to be performed 0.9
miles after the maneuver 111, and the maneuver 111 is to be
performed 0.1 miles after a previous maneuver that is not being
displayed. Each maneuver entry in the list of directions therefore
also represents a segment of the route that is between the previous
maneuver and the maneuver associated with the entry. For example,
the graphical item 113 represents a segment of the route between
the maneuver 112 "turn left onto Pack Road" and the maneuver 113
"turn left onto Lion Road", and that the length of the segment is
0.2 miles.
[0041] Each of the graphical items 111-114 displays information for
its associated maneuver. In some embodiments, the information is
presented via a set of indicators. For example, the graphical item
112 includes a graphical direction indicator 121, a distance
indicator 122, and a detailed description 123 for the maneuver
"Turn Left onto Pack Road". The graphical direction indicator 121
is a prominent visual cue of the maneuver, in this case an arrow
pointing to the left to indicate a left turn. The detailed
description 123 is a textual description of the maneuver that
provides the type of the maneuver (left turn) as well as the
location of the maneuver (Pack Road). The distance indicator 122 is
a distance measurement based on the position of the maneuver. In
some embodiments, this is a distance measurement from the previous
maneuver (i.e., the distance from the maneuver of 111 to the
maneuver of 112). One of ordinary skill would understand that
different embodiments present the information for the maneuvers
differently. For example, some embodiments include an expected time
to travel indicator in the graphical item, the expected time to
travel being based on a predicted traveling speed.
[0042] Some embodiments visually distinguish graphical items that
correspond to completed maneuvers from those that are yet to be
taken by the mobile device. In some embodiments, a graphical item
that corresponds to a completed maneuver remains in the display of
the mobile device, but in a visually less prominent way. As
illustrated, the graphical item 111 has been grayed-out while the
graphical items 112-114 remain in black, indicating that the
traveler carrying the mobile device has completed the maneuver 111
but not maneuvers 112-114. Based on the differential appearances of
the graphical items, the user of the device would understand that
the traveler has made the right turn onto Hill Road (111), and a
left turn onto Pack Road (112) is coming up next. In other words,
the graphical item 112, being the first graphical item that has not
been grayed-out, corresponds to a segment of the route that the
traveler carrying the mobile device is currently traveling on. In
some embodiments, a graphical item that corresponds to the
immediately upcoming maneuver (such as 112) would further include
an indicator (not illustrated) for indicating the distance between
the current position of the mobile device and the upcoming
maneuver.
[0043] At the second stage 102, the traveler carrying the mobile
device has completed another maneuver, namely, the left turn on
Pack Road associated with the graphical item 112. The mobile device
has in turn received updated position information (e.g., GPS
coordinates) about the traveler to know that the traveler has
completed the left turn on Pack Road. As a result, the mobile
device grays out the graphical item 112. At this stage, both
graphical items 111 and 112 have been grayed-out to indicate that
both of these maneuvers have been completed, and are hence
obsolete.
[0044] The dashed arrow in stage 102 is for illustrating that the
mobile device is in the process of updating or refreshing the
display by removing the obsolete maneuvers to make room for new
maneuvers from the list of directions 110. In some embodiments, the
display update is accomplished by scrolling the list of directions
110 such that the grayed-out items 111 and 112 are scrolled off the
display while the new graphical items 115 and 116 are scrolled into
the display. Some embodiments animate this process of updating the
display by gradually scrolling the list of directions 110, or by
fading-out obsolete items and fading-in new items from the list of
directions 110.
[0045] At the third stage 103, the mobile device has completed the
process of updating its display of the list of directions 110 to
remove the graphical items 111-112 and to include the new graphical
items 115 and 116, which correspond to maneuvers that immediately
follow the maneuver 114. Since the obsolete graphical items have
been removed, none of the displayed maneuvers are grayed-out. The
user of the mobile device would therefore understand that the first
displayed maneuver, i.e., the graphical item 113 "turn left onto
Lion Road", corresponds to the immediate upcoming maneuver. Some
embodiments display the item for the upcoming maneuver in a
different, more conspicuous manner than other items in the list of
directions.
[0046] At the fourth stage 104, the traveler carrying the mobile
device has completed the upcoming maneuver, namely, the left turn
on Lion Road associated with the graphical item 113. The mobile
device in turn grays out the graphical item 113 to indicate that
the traveler has completed the maneuver.
[0047] In the example illustrated by FIG. 1, the mobile device
allows its display to accumulate two obsolete maneuvers (e.g.,
graphical items 111 and 112 in stage 102) before refreshing the
display by removing or scrolling off all of the obsolete maneuvers.
Different embodiments handle the display refresh of the list of
directions differently. In some embodiments, the mobile device
refreshes the display (by e.g., removing or scrolling off the
maneuvers that have already been taken) when there is at least one
obsolete maneuver in the list of directions. In some embodiments,
the mobile device accumulates three or more obsolete maneuvers
before refreshing. In some embodiments, the mobile device refreshes
its display by removing only some but not all of the obsolete
maneuvers. For example, in some embodiments, the mobile device
going from stage 102 to 103 removes only the maneuver 111 but
leaves maneuver 112 in the display, even though both maneuvers 111
and 112 have become obsolete. In some embodiments, the mobile
device allows each obsolete maneuver to stay in the list of
directions for a predetermined amount of time before removal so
that the change in appearance (e.g., gray-out) of the graphical
item that corresponds to the taken maneuver is observable by the
user. In some of these embodiments, the timing for the removal of
the obsolete maneuvers is independent of how many obsolete
maneuvers are in the list of directions.
[0048] As mentioned, the list of directions 110 is a set of
instructions for taking a traveler from a point of origin to a
point of destination on a suggested route. In some embodiments, the
list of directions is created by a mapping or navigation
application that determines one or more routes from the point of
origin to the point of destination and then generates the list of
directions based on one of the determined routes. The mapping or
navigation application can be an application running on a mobile
device that is being carried by the traveler, which then displays
the generated list of directions dynamically based on the position
of the traveler carrying the mobile device. The mapping or
navigation application can also be an application running on a
computing device that is not being carried by the traveler, but
nevertheless is capable of computing a route and generating a list
of directions for the traveler.
[0049] For some embodiments, FIG. 2 illustrates the creation of a
list of directions by a mapping application running on a mobile
device 200. The mapping application allows the user to enter a
start location and an end location, computes one or more routes,
then generates a list of directions 210 based on a route that can
take a traveler from the start location to the end location. The
generation of the list of directions is illustrated in six stages
201-206.
[0050] The first stage 201 illustrates the launch of an operation
to generate a list of directions. The mobile device 200 is
executing a mapping application that graphically illustrates the
current position 270 of the mobile device (and the traveler
carrying the mobile device). The position is provided by the
positioning capability of the mobile device 200. The stage 201 also
shows the user selecting an UI item 221 for launching a facility
for computing routes.
[0051] At the second stage 202, the selection of the UI item 221
has caused the mapping application to provide an interface to allow
the user to enter a starting location at an UI item 223 and an
ending location at an UI item 224. The user is using the provided
interface to enter an ending location for the route while letting
the starting location to default to the current position of the
mobile device.
[0052] At the third stage 203, the user has completed entering the
start and end locations of the route and is selecting a UI item
222, which causes the mobile device 200 to compute one or more
routes based on the start and end locations entered by the
user.
[0053] At the fourth stage 204, the mapping application has
finished the route computation and provided three routes 231-233
that can take a traveler from the starting location to the end
location. The mapping application in turn shows a map at a zoom
level that allows all three routes 231-233 to be viewed in their
entirety. The route 232 is the fastest of the three routes (25
minutes) and is selected by default. The route 232 appears
highlighted, and its information is in a banner 240 near the top of
the display.
[0054] The mapping application at this stage also provides several
UI items for activating various map viewing options, such as an UI
item 225 for centering the map at the current location, an UI item
226 for showing the map in 3D perspective, and an UI item 227 for
displaying the route as a list (i.e., a list of directions). The
fifth stage 205 shows the result of when the user selects the UI
item 225 to center at the current location 270.
[0055] The sixth stage 206 shows the result of when the user
selects the UI item 227, which brings up a list of directions 210
for the selected route 232. The list of directions is represented
by six UI items 211-216. The item 211 provides the starting point
of the route, which is also the current location 270 in this
example. The items 212-216 correspond to maneuvers that the
traveler should make according to the route 232. The list of
directions 210 may have additional maneuvers that are not being
displayed, but can be brought into view by scrolling.
[0056] As mentioned, some embodiments dynamically display the list
of directions such as 110 and 210 according to the current position
of the mobile device. The display for the list of directions grays
out (or makes less visible) an individual maneuver whenever the
traveler carrying the mobile device has completed the maneuver and
rendered that maneuver obsolete. Furthermore, some embodiments
refresh the display of the list of directions whenever a certain
number of displayed maneuvers have become obsolete. FIG. 3
illustrates the correspondence between the dynamic display of the
list of directions and the current position of the mobile device
(i.e., the vehicle or the person carrying the mobile device). FIG.
3 illustrates the list of directions 110 of FIG. 1 in four stages
301-304, which corresponds to stages 101-104 of FIG. 1. In
addition, FIG. 3 illustrates the current position of the mobile
device in a two-dimensional (2D) map 300 for each of the four
stages. In some embodiments, both the display for the list of
directions 110 and the map 300 are available for view by the user
of the mobile device 110. Indicator 350 indicates the current
position of the mobile device.
[0057] The map 300 includes several road sections 311-315, some of
which are referred to by items in the list of directions 110.
Specifically, the road section 312 correspond to "Hill Road" of the
item 111, the road section 313 corresponds to "Pack Road" of the
item 112, the road section 314 corresponds to "Lion Road" of the
item 113, the road section 315 corresponds to "Tiger Road" of the
item 114. The road sections 311-315 are also highlighted,
indicating that they are part of the route computed by the mapping
application for traveling from the starting location to the ending
location.
[0058] At the first stage 301, which corresponds to the stage 101,
the current position indicator 350 indicates that the traveler
carrying the mobile device has performed the maneuver 111 and made
the right turn onto Hill Road (the road section 312). The maneuver
111 is at this point obsolete and has been grayed out.
[0059] At the second stage 302, which corresponds to the stage 102,
the current position indicator 350 indicates that the traveler has
performed the maneuver 112 and taken the left turn onto Pack road
(road section 313). The maneuver 112 is at this point also obsolete
and grayed out. The dashed line in stage 102 indicates that the
mobile device is in the process removing the two obsolete maneuvers
from display, e.g., by scrolling the list of directions so items
111 and 112 come off the display.
[0060] At the third stage 303, which corresponds to the stage 103
the display of the mobile device has completed the removal of the
obsolete maneuver items 111-112 from display and added new items
115 and 116 from the list of directions 110. The current position
indicator 350 in the map indicates that the mobile device is still
on Pack road and approaching Lion road but has yet to perform the
maneuver 113 (left turn onto Lion Road). Accordingly, the item 113
has not been grayed-out.
[0061] At the fourth stage 304, which corresponds to the stage 104,
the current position indicator 350 indicates that the traveler
carrying the mobile device has performed the maneuver 113 and taken
the left turn onto Lion Road (road section 314). The maneuver 113
is at this point obsolete and grayed out. The mobile device would
remove the obsolete maneuver 113 later when, for example, the
traveler carrying the mobile device has completed maneuver 114 and
made the right turn into Tiger road.
[0062] In some embodiments, the dynamic updating of the list of
directions is performed during navigation mode. Specifically, some
embodiments dynamically update the list of directions as the mobile
device is giving the traveler turn-by-turn instructions according
to a route and in response to the current position of the mobile
device. In some embodiments, the mobile device in its navigation
mode instructs the driver/traveler to make a particular maneuver,
and then changes the appearance of the corresponding maneuver item
in the list of directions after the mobile device detects that the
traveler carrying the mobile device has completed that particular
maneuver. FIG. 4 illustrates the dynamic display of the list of
directions 110 during navigation operations by the mobile device
100.
[0063] FIG. 4 illustrates the display of the mobile device 100 in
four stages 401-404. FIG. 4 also illustrates the corresponding 2D
map 400 in four stages 451-454. The four map stages 451-454 shows
the current positions of the mobile device during the stages
401-404, respectively. The list of directions includes maneuvers
111-116 as in FIGS. 1 and 3.
[0064] The map 400 includes several road sections 411-415, some of
which are referred to by items in the list of directions 110.
Specifically, the road section 412 corresponds to "Hill Road" of
the item 111, the road section 413 corresponds to "Pack Road" of
the item 112, the road section 414 corresponds to "Lion Road" of
the item 113, and the road section 415 corresponds to "Tiger Road"
of the item 114. The road sections 411-415 are highlighted,
indicating that they are part of the route computed by the mapping
application for traveling from the starting location to the ending
location.
[0065] The first stage 401 shows the mobile device 100 in 3D
navigation mode. Specifically, the mobile device 100 is displaying
a 3D view of the road from the perspective of the traveler based on
his/her current position. Under the navigation mode, the mobile
device is giving turn-by-turn instructions to the traveler based on
a route that is used to generate the list of directions 110. The
mobile device is also displaying a notification 430 for the
upcoming maneuver, i.e., making a left turn onto Pack Road in 0.2
miles. The current position indicator 450 in the corresponding map
stage 451 indicates that the traveler carrying the mobile device is
on Hill Road 412 and approaching Pack Road 413.
[0066] The display of the mobile device 100 also provides several
UI items such as UI items 421 and 422. The UI item 421 is for
bringing up the 3D navigation view (which is highlighted to
indicate that the 3D navigation view is already selected as the
current view). The UI item 422 is for bringing up a list of
directions view. The first stage 401 shows the user selecting the
UI item 422.
[0067] The second stage 402 shows the mobile device 100 immediately
after the user has selected the UI item 422. The display of the
mobile has switched to displaying the list of directions 110. The
mobile device is displaying maneuver items 111-114 from the list of
directions 110. The current position indicator 450 in the
corresponding map stage 452 indicates that the traveler carrying
the mobile device is on Hill Road 412 and traveling toward Pack
Road 413. The mobile device 100 in its navigation mode knows that
the traveler carrying the mobile device has already taken the right
turn onto Hill Road (i.e., maneuver 111) and that the left turn
into Pack Road (i.e., maneuver 112) is coming up next.
Consequently, maneuver item 111 is grayed-out but not maneuver item
112.
[0068] The third stage 403 shows the mobile device 100 after the
traveler carrying the mobile device has performed the maneuver of
maneuver item 112. The current position indicator 450 in the
corresponding map stage 453 indicates that the traveler carrying
the mobile device is on Pack Road 413 and traveling toward Lion
Road 414. The mobile device has grayed-out maneuver item 112,
because the traveler carrying the mobile device has already
performed that maneuver by making the left turn onto Pack Road.
Furthermore, the display of the mobile device is in the process of
refreshing the display of the list of directions 110 (as indicated
by the dashed line) by removing (or scrolling off) obsolete
maneuver items 111 and 112 from the display.
[0069] The fourth stage 404 shows the mobile device 100 after it
has completed the refreshing of the display of the list of
directions. As illustrated, maneuver items 111 and 112 have
disappeared from view (or scrolled-off), and new maneuver items 115
and 116 are brought into view (or scrolled-in). None of the items
appear grayed-out, as the corresponding map stage 454 shows that
the current position indicator 450 is approaching Lion Road but has
yet to make the left turn (i.e., maneuver 113).
[0070] FIG. 4 illustrates an example in which the mobile device in
navigation mode updates its display of the list of directions
whenever the mobile device detects that the traveler carrying the
mobile device has completed a maneuver that corresponds to an item
in the list of directions. In some embodiments, the mobile device
also changes the appearance of a particular maneuver item in the
list of directions as the navigation software is instructing the
traveler to perform that particular maneuver.
[0071] FIG. 5 conceptually illustrates a process 500 for
dynamically updating a list of directions for some embodiments. In
some embodiments, the process 500 starts after the mobile device
has generated a list of directions or received a list of directions
that is generated by another computing device. In some embodiments,
the process 500 starts after the list of directions has become
available and the mobile device has entered navigation mode.
[0072] The process receives (at 510) the position of the next
maneuver in the list of directions and receives (at 520) the
current position of the mobile device. In some embodiments, each
maneuver is associated with a position that can be compared with
the current position of the mobile device. In some embodiments, the
current position is provided by GPS capabilities within the mobile
device. Some embodiments identify the next maneuver in the list of
directions as the first maneuver that the traveler carrying the
mobile device will reach based on the mobile device's current
position and direction.
[0073] Next, the process determines (at 530) whether the current
position has reached the position of the maneuver. Some embodiments
examine the received current position of the mobile device and
compare it with the position that is associated with the next
maneuver. In some embodiments, the process determines whether the
current position of the mobile device is within a certain threshold
range of the position of the next maneuver. If the current position
of the mobile device indicates that the traveler carrying the
mobile device has already reached or passed the position associated
with the next maneuver, the process proceeds to 540. If the current
position of the mobile device indicates that the traveler carrying
the mobile device has yet to reach the position of the maneuver,
the process returns to 520 to receive the current position of the
mobile device again.
[0074] At 540, the process changes the appearance of the obsolete
maneuver in the display. As the traveler carrying the mobile device
is making his way through the route by performing the maneuvers
suggested by the route, some embodiments mark each performed
maneuver as having been completed and therefore obsolete. The
process then changes the display of the list of directions to
inform the user that the maneuver has already been performed. As
discussed by reference to FIGS. 1 and 3 above, some embodiments
change the appearance of graphical items that are associated with
obsolete maneuvers in the list of directions. Some embodiments
change the appearance of those obsolete graphical item to make them
less conspicuous than other items, such as by graying out.
[0075] The process then determines (550) if the destination has
been reached. In some embodiments, the last maneuver in the list of
directions corresponds to the arrival at the destination point of
the route. In some embodiments, if the last maneuver in the list of
directions has become obsolete, the process would realize that the
mobile device has reached the destination. If the mobile device has
not reached the destination, the process proceeds to 560. If the
mobile device has reached the destination, the process 500
ends.
[0076] The process determines (at 560) whether there are more than
a threshold number of obsolete maneuvers in the display. As
illustrated in FIGS. 1, 3, and 4, the mobile device refreshes the
display of the list of directions whenever two or more maneuver
items in the display have been grayed out or marked as obsolete (so
the threshold number of obsolete maneuvers is two in those
examples). If the number of obsolete maneuver items being displayed
is greater than or equal to the threshold number, the process
proceeds to 570 to refresh the display in order to remove the
obsolete maneuver items from display. Otherwise, the process 500
would not refresh the display and leave the obsolete maneuvers in
the display until more maneuvers from the list of directions have
been performed.
[0077] The process refreshes (at 570) the display of the list of
directions such that at least some of the obsolete maneuvers are
removed from display and additional maneuvers brought into view.
Some embodiments animate the refresh by scrolling the list of
directions. Some embodiments animate the refresh by fading-out
obsolete items and fading-in new items from the list of directions.
After refreshing the display of the list of directions, the process
returns to 510.
II. Distance Labels
[0078] Some embodiments provide a mapping or navigation application
that intelligently places distance labels along a route in a map. A
distance label placed at a particular position of the route shows
the distance to the particular location from the starting point of
the route. Distance labels allow the user of the map to quickly
appreciate the distances between the various points of interest
(e.g., maneuvers) along the route. In some embodiments that display
the route as a list of driving directions, the distance labels are
placed alongside the list of driving directions, and each distance
label is associated with a maneuver in the list of directions.
[0079] FIG. 6 illustrates the placement of distance labels on a
route in a map. The route includes a series of maneuvers that take
a traveler from a point of origin to a point of destination, and
the distance labels are for identifying the distances from the
origin to some of those maneuvers along the route.
[0080] In some embodiments, the placement of distance labels is
performed by a computing device running a mapping application when
it computes the route. In some embodiments, the computing device is
a mobile device that is being carried by the traveler and is
capable of providing the traveler with dynamic information based on
the current position of the mobile device. In some embodiments, the
computing device is a device that is not being carried by the
traveler, but nevertheless is running a mapping or navigation
application that can compute and provide a route and/or a list of
directions to the traveler.
[0081] FIG. 6 illustrates the placement of the distance labels in
four stages 601-604. Each stage shows a graphical user interface
(GUI) 600 of a computing device. The GUI 600 is that of a mapping
application, which is capable of providing several types of
cartographic information, including a list of (driving) directions,
maps in 2D view or 3D view, traffic conditions, as well as the
current position of the mobile device. The GUI 600 includes an UI
item 621 for bringing the current position of the mobile device
into view, an UI item 622 for viewing the map in 3D perspective, an
UI item 623 for providing traffic condition on the map, and an UI
item 624 for creating a route from a starting location to an ending
location.
[0082] At the first stage 601, the mapping application of the
computing device is showing a 2D map that is centered at the
current location 670 of the traveler carrying the mobile device.
For a mobile computing device that is being carried by the
traveler, the current position is provided by positioning
capabilities (e.g., GPS) of the mobile device in some embodiments.
For a computing device that is not being carried by the traveler,
the current position of the "traveler" can be the location of the
computing device itself, or a current position of a traveler who
sends his positional information to the computing device. The first
stage 601 also shows the user (illustrated by a cursor) selecting
the UI item 624 in order to activate an interface for entering the
starting and ending locations for generating a route.
[0083] At the second stage 602, the mapping application is
displaying a route generation interface 630 for entering a start
location and an ending location. The interface 630 was brought into
the GUI 600 by the user's selection of the UI item 624. The
interface 630 allows the user to enter the starting location and
ending location through items 631 and 632. The interface 630 also
has a UI item 633 for generating a route based on the entered
starting and ending locations. The user in stage 602 is about to
select the ending location item 632 for entering the ending
location for the route while leaving the starting location to
default to the current location.
[0084] At the third stage 603, the user has finished entering the
starting and ending locations of the route and is selecting the
route generation item 633. Selection of the route generation item
633 causes the mapping application to compute a route from the
entered starting location to the entered ending location. The
mapping application also generates a list of directions that
provides instructions on what maneuvers to perform in order to
reach the destination according to the computed route.
[0085] The fourth stage 604 shows the result of the route
generation operation, in which the mapping application has
generated a route 660 for reaching the destination location from
the current position and a corresponding list of directions 610.
The GUI 600 at this stage shows a 2D map 641 at a zoom level that
allows the route 660 to be viewed in its entirety. The GUI 600 also
includes a pane 642 for displaying the generated list of directions
610. The first item 611 in the list corresponds to the origin 670
of the route 660. The last item in the list (not in the display)
corresponds to the terminus 679 of the route 660.
[0086] The 2D map 641 also displays four distance labels 671-674
along the route 660. A distance label at a particular point in the
route indicates the distance between the origin 670 of the route
and that particular point in the route. For example, the number `2`
in the distance label 671 indicates that the label is associated
with a point in the route that is 2 miles away from the origin 670,
while the number `40` in the distance label 674 indicates that the
distance label 674 is associated with a point in the route that is
40 miles away from the origin 670. In some embodiments, the
placement of the distance labels in the map is at scale with
respect to the distance shown on the label. For example, the length
along the route between the origin 670 and the label 673
corresponds to 26 miles according to the scale of the map.
[0087] One of ordinary skill would understand that distance labels
can be in another unit of length such as kilometers, yards, etc. In
some embodiments, a distance label at a particular point of the
route displays an expected time of travel to reach that particular
point based on predicted traveling speeds along the route. The
distance labels in the examples described above are measurements
from the start of the route. However, in some embodiments, distance
labels are measurements from the end of route (i.e., distance until
the destination or expected time of travel to reach the
destination, etc.)
[0088] In addition to placing distance labels on the route in the
map window 641, some embodiments place distance labels along the
list of directions as well. Specifically, some embodiments place
distance labels in individual graphical items of the list of
directions. FIG. 7 illustrates distance labels that are placed
along a list of directions and along a route in the map. FIG. 7
illustrates the placement of the distance labels along the list of
directions in three stages 701-703 of a GUI 700 of a computing
device.
[0089] The first stage 701 is similar to the stage 603 of FIG. 6,
in which the user has finished entering the starting and ending
locations of the route and is selecting the route generation item
733, which causes the mapping application to compute a route 760
and generating a list of directions 710 based on the computed route
760.
[0090] The second stage 702 is similar to the stage 604 of FIG. 6,
in which the GUI 700 displays a map window 741 and a pane 742. The
map window 741 shows the route 760 in its entirety and includes
five distance labels 771-775 that are placed along the route 760.
The pane 742 is for showing the list of directions 710 and includes
three of the same five distance labels 771-773 along the list of
directions 710. Since the pane 742 is configured to display only
six maneuver items at a time, it can only display some of the
distance labels. As illustrated, the pane 742 is displaying only
items 711-716 of the list of directions, in which the distance
label 771 (3 miles) is placed along the item 712, the distance
label 772 (5 miles) is displayed along the item 714, and the
distance label 773 (7 miles) is displayed along the item 715.
However, the GUI 700 allows the scrolling in the pane 742 so other
maneuvers in the list of directions (and other distance labels) can
be revealed.
[0091] The third stage 703 shows the GUI 700 after the user has
scrolled the list of directions 710 in the pane 742 to reveal other
maneuvers in the list of directions. As illustrated, the user has
scrolled the list of directions up such that items 711-714 have
been scrolled off the screen and the items 717-720 have been
scrolled in. The distance label 774 (9 miles) associated with the
maneuver item 718 and the distance label 775 (14 miles) associated
with the maneuver item 720 are brought into view by the scrolling
operation.
[0092] In some embodiments, placing a distance label next to a
particular maneuver item in the list of directions means that the
maneuver is to occur at or near the position specified by the
distance label. For example, placing the label `3` (771) next to
the maneuver item 712 means that the maneuver "turn right onto H
Street" is to occur at or near 3 miles from the origin of the route
760. As mentioned, in some embodiments, each maneuver item
represents a segment of the route between two consecutive
maneuvers. In some of these embodiments, a distance label placed
next to a maneuver item provides the information on the distance
between the origin of the route and the segment of the route
represented by the maneuver item. For example, in some embodiments,
placing the distance label `5` (772) next to the item 714 informs
the user that some point in the segment of the route between the
left turn onto 1st street (maneuver item 713) and the right turn on
to Z street (maneuver item 714) is 5 miles away from the origin of
the route.
[0093] In some embodiments, the mapping application places a
predetermined number of distance labels on the route from the point
of origin to the destination. In some embodiments, this
predetermined number is independent of the length of the route. The
example of FIG. 6 has only 4 labels placed along the route 660 that
is longer than 40 miles, while the example of FIG. 7 has 5 labels
placed along the route 760 that is only slightly longer than 14
miles. The choice of the number of labels is not contingent upon
the distance of those routes.
[0094] The display of distance labels is useful for providing scale
information to the user of the mapping application. A user seeing a
route in the map with the distance labels would understand the
scale of the map without having to consult the conventional linear
scale for the map. Thus, some embodiments refer to the distance
labels as distance scales. Furthermore, since a route is rarely if
ever a straight line that can be easily compared with a straight
scale, having distance labels allows the user to easily appreciate
the actual distances between different points of interest in a
not-so-straight route.
[0095] Different embodiments place distance labels along the route
according to different criteria. In some embodiments, the distance
labels are distributed uniformly distance wise throughout the
entire route regardless of the positions or steps in the list of
directions. Some embodiments place distance labels at positions
along the route whose distance measures are multiples of a "nice
round number" (such as 500 m, 1.5 km, 2.5 miles, etc.). In some
embodiments, a "nice round number" is a number with at most two
significant non-zero digits, and each of these two non-zero digits
is 1, 2, or 5. This "nice round number" is a number that typically
serves as the unit of a scale that runs along the bottom of the
map. The distance labels therefore effectively turn the route into
a map scale that has multiple segments, each segment representing a
unit of the scale having a length that is the "nice round number".
(Of course, a conventional map scale is straight, while a "map
scale" that is formed by distance labels along a route is one that
can have turns and curves).
[0096] In some embodiments, this "nice round number", (i.e., the
length of a segment that is a unit of the scale) is referred to as
a "segment unit value". A segment unit value provides a distance
value that the segment represents on the map. For example, in a
metric system, a segment unit value may be 5 meters, 10 meters, 100
meters, 1 km, 5 km, etc. In a U.S. customary system, a segment unit
value may be 1 feet, 5 feet, 100 feet, 1000 feet, 1 mile, 5 miles,
10 miles, etc.
[0097] In order to determine the placement of distance labels, some
embodiments determine other parameters based on the segment unit
value. Some embodiments compute a segment display length, which is
the length of the segment as displayed on the screen of the device
(e.g., between 0.5-2.0 cm on the screen). This length is determined
from the segment unit length based on the scale of the map at the
current zoom level. Some embodiments compute a number of segments,
which determines the number of distance labels to display along the
route. In some embodiments, the mapping application may divide the
route up to five segments (i.e., having up to four distance labels)
regardless of the actual length of the route.
[0098] FIG. 8 conceptually illustrates a process 800 of some
embodiments for determining the placement of the distance labels
along a route. In some embodiments, a mapping application that
displays the distance labels performs the process 800 (e.g., the
mapping application described above by reference to FIGS. 6-7). In
some embodiments, the process 800 starts whenever the mapping
application has computed a route with a list of directions. In some
embodiments, the process 800 starts whenever the zoom level of the
map changes.
[0099] The process 800 starts by receiving (at 805) the length of
the route. The length of the route is computed from the coordinates
of various elements of the route in some embodiments. In some
embodiments, the placement of the distance labels is based on the
total length of the route, and the received length of route is the
total length of the route, regardless of zoom level. In some
embodiments, the placement of the distance labels is based on the
portion of the route being displayed under the current zoom level,
and the received length of the route is the length of the route
being displayed currently.
[0100] The process then computes (at 810) the segment unit value,
and computes (at 820) the number of distance labels to display
along the route. Some embodiments adjust the segment unit value
based on the received length of the route in order to limit the
number of distance labels to a target number (e.g., to four
distance labels/five segments). In some embodiments, the segment
unit value is computed in order to achieve a target number of
distance labels, each distance label having a distance measure that
is a multiple of a "nice round number". The computation of the
number of distance labels as well as segment unit value will be
further described below by reference to FIG. 9.
[0101] Next, the process 800 computes (at 830) the segment display
length for the particular zoom level that accurately represents the
distance of the computed segment unit value on the map. As
mentioned, the segment display length is the length of the segment
as displayed on the screen of the device. In order to compute the
segment display length, the process 800 determines the distance
that is represented by a particular unit (e.g., 1 cm, 2 cm, etc.)
on the display of the device. The process 800 then calculates the
segment display length in order to provide a length that represents
the segment unit value that was calculated for the particular zoom
level. For example, if 1 cm distance on the screen represents 1.2
miles at the current zoom level, the segment display length of a
segment having a segment unit value of 1 mile would be
approximately 0.833 cm on the screen of the device.
[0102] After determining the placement of the distance labels along
the route in the map, the process displays (at 840) the distance
labels along the route according to the computed number of distance
labels and segment display length. The process then displays (at
850) the distance labels in the list of directions by associating
each distance label to a nearest (distance wise) maneuver or step
in the list of directions. In some embodiments, if multiple
distance labels are associated with a particular maneuver in the
list of directions (e.g., when the particular maneuver represents a
long stretch of the highway without turns), the mapping application
would display only one distance label for that maneuver. After
displaying the distance labels, the process 800 ends.
[0103] As mentioned, the number of distance labels and the segment
unit value are contingent upon computing a nice round number that
is suitable to serve as the segment unit value. FIG. 9 illustrates
a process 900 for computing a desirable segment unit value as well
as a suitable number of segments for the placement of distance
labels along the route.
[0104] The process 900 initially identifies (at 905) a lower bound
value L of the segment unit value based on a target number of
distance labels. Some embodiments compute this lower bound number
by dividing the length of the route by the target number of
segments corresponding to the target number of distance labels. For
example, as mentioned, some embodiments limit the number of
distance labels to up to 4 (thus the target number of segments is
5). Thus, for a route that is 7995 meters long, the process would
divide the route length by 5 and produce a lower bound number 1599
meters. This value is typically not a desirable number and thus the
process will re-adjust the segment unit value according to a new
desirable number value that gets computed (at the end of process)
for the segment (e.g., 1000 meters, 1 km, 5 km, etc.).
[0105] The process 900 then selects (at 910) a unit for the
distance labels. For example, in a metric system, the process
determines whether to display the scale in meters or kilometers. In
a U.S. customary system, the process would determine whether to
display the scale in feet or miles. Continuing with the example,
the process may determine to display the 1599 meters in units of
"kilometers" with 1 km=1000 meters. In some embodiments, the
process may also analyze the locale of the region of the map to
determine an appropriate unit measurement. For instance, if the
mapping application is in use in Europe, the mapping application
may apply the metric system, whereas a device in the U.S. may apply
the U.S. standard system.
[0106] The process then computes (at 915) a log of the lower bound
L (e.g., log(L)) in the chosen units of the lower bound to obtain a
number X. The number X includes an integer portion I and a
fractional portion f. In some embodiments, the log may be a base 10
logarithm. In other embodiments, a different base may be used
(e.g., 2 or the natural log, etc.). Continuing with the example,
computing log (1599 meters*1 km/1000 meters=1.599 km)=(approx.)
0.2038484637. Thus the integer portion I=0 and the fractional
portion f=(approx.) 0.203.
[0107] The process then selects (at 920) a desirable number based
on the log of the lower bound L. Some embodiments compare the
fractional portion f of the log of L to a set of numbers N and
selects the smallest number N' that is larger than f from the set
N. The set of numbers N are computed as the log of a set of
desirable numbers n. For example, the set of desirable values n
could be 1.25, 2.5, 5 or 10, and the set of numbers N would then be
{log(1.25), log(2.5), log(5), log(10)}, which equals approximately
{0.0969, 0.3979, 0.6989, and 1}. Continuing with the example, the
value of log(2.5)=0.3979 is the smallest number of the set N that
is larger than the fractional portion f=(0.203). Thus, the process
selects for N' the value of log(2.5), whose corresponding desirable
number n' from the set n is 2.5.
[0108] The process then computes (at 925) the segment unit value by
using the selected desirable number. In some embodiments, the
process computes 10.sup.(I+N') or 10.sup.I*n' to obtain the segment
unit value for a segment. Following the above example, where the
lower bound value L is 1599 meters and I=0 and n'=2.5 (selected by
fractional portion f=0.203), the scale segment would have a segment
unit value of 2.5 km per segment, and the desired scale with a unit
of measurement in kilometers.
[0109] Having computed the segment unit value of a segment for the
scale, the process 900 then determines (at 930) the number of
segments to display in the scale based on length of the route and
the segment unit value. In some embodiments, the process 900
determines the number of segments to display along the route by
using the following series of computations.
[0110] The process 900 first determines how many segments at
segment unit value will fit into the length of the route. The
process 900 then determines whether the number of segments that
will fit into the length of route is less than or greater than 4.5
segments (since the target number of segments is five). The process
900 then rounds the number to the nearest integer number, such that
a number of segments less than 4.5 segments rounds to 4 and a
number of segments greater than (or equal to) 4.5 rounds to 5. For
example, if the mapping application determines that 4.4 segments
fit within the length of the route, the application rounds the 4.4
segments down and only displays 3 distance labels (i.e., 4
segments) along the route on the map. If the mapping application
determines that 4.8 segments fit within the length of the route,
the process rounds the 4.8 segments up and displays 4 distance
labels (i.e., 5 segments) along the route on the map.
[0111] In some embodiments, the distance labels are placed such
that a section of a route with more maneuvers is more likely to
have a distance label, while a section of the route with fewer
maneuvers is less likely to have a distance label. Placing distance
labels in such a fashion allows a traveler to quickly realize
whether he is in a section of the route with a lot of maneuvers, or
if he is in a section of the route with very few maneuvers. For
example, most routes have many maneuvers near the start and the
destination but relatively few maneuvers in between. Some
embodiments therefore place more distance labels near the start and
end of the route where there are many maneuvers, and fewer distance
labels in the middle stretch where there are fewer maneuvers.
[0112] For some embodiments, FIG. 10 illustrates the placement of
distance labels based on where the maneuvers are in the route. FIG.
10 illustrates a GUI 1000 of a computing device running a mapping
application that is similar to the GUI 700 of FIG. 7. Like the GUI
700, the GUI 1000 also has a 2D map window 1041 for displaying a
route 1060 and a pane 1042 for displaying a list of directions
1010. The mapping application has already computed the route 1060
from a point of origin 1070 to a destination 1079. The mapping
application has also generated the list of directions 1010 based on
the computed route 1060.
[0113] As illustrated, the mapping application has placed distance
labels 1071-1074 along the route 1060. Toward the origin of the
route lie the distance labels 1071 (1 mile) and 1072 (2 mile), as
there are many turns near the origin (as can be seen by the
maneuver items 1011-1018 near the start of the list of directions
1010). Likewise, toward the end of the route lie the distance
labels 1073 (49 miles) and 1074 (50 miles), as there are many
turns/maneuvers near the destination.
[0114] Some embodiments decide whether to place one of the fixed
number of distance labels (e.g., 4) at any particular position
along the route by determining how many maneuvers or steps are near
that particular position. In some embodiments, the placement of the
distance labels along a particular section of the route is
determined by the number of maneuvers or steps within that section
of the route. In other words, some embodiments distribute the
distance labels based on the "density" of maneuvers along the
route.
[0115] Some embodiments determine the placement of the distance
labels along the route from the list of directions. The mapping
application in some of these embodiments distributes the distance
labels as evenly as possible among the maneuver items in the list
regardless of the actual distances associated with the maneuvers.
In some embodiments, the distribution of the distance labels is
based on making the number of maneuvers between consecutive
distance labels as even as possible. For example, some embodiments
associate distance labels 1071-1074 with individual maneuvers in
the list of directions 1010 so as to make the number of maneuvers
between the distance labels 1071 and 1072 the same or nearly the
same as the number of maneuvers between the distance labels 1072
and 1073, and the number of maneuvers between the distance labels
1072 and 1073 the same or nearly the same as the number of
maneuvers between the distance labels 1073 and 1074, etc. Once the
distance labels have been associated with individual maneuvers in
the list of directions, the distance labels are introduced back to
the route in the map based on the positions of the associated
maneuvers.
[0116] Thus, a segment of the route between two consecutive
maneuvers that are far apart in actual distance would not receive
more distance labels than a segment of the route between two
consecutive maneuvers that are close together in actual distance.
For example, the segment associated with maneuver 1019, which is
46.9 miles long, would not have more distance labels than say, the
segment associated with maneuver 1014, which is only 0.5 miles
long. In such a manner, a short stretch of the route having more
maneuvers would have more distance labels than a long stretch of
the route with fewer maneuvers.
[0117] In some embodiments, the mapping application outputs the
list of directions to a printing device. In some of these
embodiments, the distance labels are included in the printed list
and placed next to some of the printed maneuver items. FIG. 11
illustrates a printed list of directions that includes distance
labels.
[0118] FIG. 11 illustrates a GUI 1100 of a computing device running
a mapping application that is similar to the GUI 700 of FIG. 7.
Like the GUI 700, the GUI 1100 also has a 2D map window 1141 for
displaying a route 1160 and a pane 1142 for displaying a list of
directions 1110. The mapping application has already computed the
route 1160 from a point of origin 1170 to a destination 1179. The
mapping application has also generated the list of directions 1110
based on the computed route 1160.
[0119] The mapping application has placed 5 distance labels
1171-1175 along the route 1160 in the map window 1141 as well as
along the list of directions 1110 in the pane 1142. The pane 1142
is configured to display at most seven maneuvers from the list of
directions. As a result, only a subset of the list of directions is
displayed, and only the distance labels associated with the
displayed maneuvers are displayed in the pane 1142 (i.e., only
1171-1173).
[0120] FIG. 11 also illustrates the print out of the list of
directions by the user (through the use of menu items at the top of
the GUI 1100). The printing operation produced a print-out 1105,
which includes the complete list of the directions 1110 and all of
the distance labels 1171-1175.
[0121] In the example of FIG. 11, the set of distance labels being
displayed along the route in the map window 1141, along the list of
directions in the pane 1142, and in the print out 1105 are the
same. However, in some embodiments, the set of distance labels in
the map is not necessarily the same as the set of distance labels
in the list of directions, and the set of distance labels in the
print out is not necessarily the same as either the map or the list
of directions. FIG. 12 illustrates a mapping application in which
the distance labels along the route in the map window, along the
list of directions, and in the print out are not the same. FIG. 12
illustrates a route 1260 in a map window 1241, a list of directions
1210 in a pane 1242, and a print-out 1205 of the list of directions
1210. The set of distance labels in the print out 1205 includes
distance labels 1271 (3 mile), 1272 (5 mile), 1273 (7 mile), 1274
(9 mile), and 1275 (14 mile). The map window 1241, however,
displays only distance label 1271 (3 mile), 1273 (7 mile), and 1275
(14 mile). The pane 1242 displays only a portion of the list of
directions 1210, and hence displays only some of the distance
labels (1271-1273), though the user can scroll the list of
directions 1210 to view the rest (1274-1275).
[0122] Some embodiments do not display distance labels along the
route in the map or along the list of directions. FIG. 13
illustrates a GUI 1300 of a mapping application that displays
distance labels 1371-1373 only along the list of directions 1310 in
pane 1342 but not along the route 1360 in the map 1341. The
distance labels 1371-1375 are printed along with the list of
directions 1310 in the print-out 1305. FIG. 14 illustrates a
mapping application that does not display distance labels at all in
the GUI 1410 (not along the route 1460 in the map 1441 nor along
the list of directions 1410 in pane 1442). The distance labels
1471-1475 are available only in the print-out 1405 of the list of
directions 1410. FIG. 15 illustrates a mapping application that
displays the distance labels 1571-1575 along the route 1560 in a
map window 1541 of a GUI 1500 and includes the distance labels
1571-1575 in a print-out 1505 of a list of directions 1510. The
mapping application, however, does not display the distance labels
along the list of directions 1510 in the pane 1542 within the GUI
1500.
III. Changing the View of the Map by Selecting a Step in the List
of Directions
[0123] In some embodiments, individual steps or maneuvers in the
list of directions are selectable items in the GUI. The selection
of a GUI item that corresponds to a particular maneuver in the list
of directions causes the view of the map to move toward a location
on the route that corresponds to the particular maneuver. When the
user selects a new maneuver from the list of directions, some
embodiments animate a transition from a previous view for a
previously selected maneuver to a new view for the newly selected
maneuver. In some embodiments, the transition includes zooming out
to temporarily include both the previously selected maneuver and
the newly selected maneuver before zooming in at the newly selected
maneuver or step.
[0124] FIG. 16 illustrates a mapping application that changes the
view of the map due to the selection of a maneuver from a list of
directions. FIG. 16 illustrates a GUI 1600 of a computing device
running the mapping application. Like the GUI 700 of FIG. 7, the
GUI 1600 has a 2D map window 1641 for displaying a route 1660 and a
pane 1642 for displaying a list of directions 1610. The mapping
application has already computed the route 1660 from a point of
origin 1670 to a destination (not shown). The mapping application
has also generated the list of directions 1610 based on the
computed route 1660. The mapping application has also generated
distance labels 1671-1673, which are displayed along the route 1660
in the map window 1641 as well as along the list of directions in
the pane 1642.
[0125] In four stages 1601-1604 of the GUI 1600, FIG. 16
illustrates changing the view of the map due to the selection of a
maneuver items in the list of directions 1610. At the first stage
1601, the map window 1641 is centered on the point of origin 1670,
which is also the current position of the mobile device. Since this
is the point that is the currently the center of the map view of
the mapping application, this is also the currently viewed
position. The user is selecting an item 1615 in the list of
directions 1610. The item 1615 corresponds to a maneuver that is
not in the map window 1641 during stage 1601. Furthermore,
positions along the route 1660 that correspond to distance labels
1671, 1672, and 1673 are not in map window 1641.
[0126] At the second stage 1602, the mapping application begins to
change the view of the map by zooming out. The zooming out allows
the map window 1641 to show positions along the route 1660 that
correspond to distance labels 1671 (1 mile) and 1672 (2 mile). The
original position 1670 is also being kept in view. However, the
distance label 1673 (9 mile) (which is associated with the selected
maneuver 1615) is still out of the view.
[0127] At the third stage 1603, the mapping application continues
to zoom out until the original position 1670 and the selected
maneuver 1615 (which corresponds to distance label 1673) are both
in view of the map 1641.
[0128] Finally, at the fourth stage 1604, the mapping application
zooms in on the position of the maneuver 1615 (and of the distance
label 1673). The original location 1670 and distance labels 1671
and 1672 that were visible during stages 1602 and 1603 are no
longer in view. In some embodiments, the new zoom level is based on
the distance between the selected maneuver and its immediate
neighboring maneuvers.
[0129] Some embodiments animate the transition between the
different views of the map upon the selection of a maneuver item in
the list of directions. In some embodiments, the animated
transition can be based upon the movement of a virtual camera above
the map. FIG. 17 conceptually illustrates the transition between
different views of the map in FIG. 16 based on the movement of such
a virtual camera. One of ordinary skill would understand that the
introduction of the virtual camera is for conceptually explaining
the movement of the view of the map. Some embodiments do not
actually implement such a virtual camera.
[0130] FIG. 17 illustrates the movement of the virtual camera in
four stages 1701-1704. Each stage illustrates a map view that is
seen in the map window 1641 in the four stages 1601-1604 of FIG.
16. Each stage also illustrates a virtual camera 1750 hovering
conceptually above a map surface 1730 that includes the entirety of
the route 1660.
[0131] The first stage 1701 shows a map view 1711 that is seen in
the map window 1641 during the stage 1601, which encompasses only
the point of origin 1670. The stage shows the camera 1750 at a
height over the map surface 1730 that corresponds to the zoom level
of the map view 1711, as the camera is viewing a portion of the map
surface 1730 that corresponds to the map view 1711.
[0132] The second stage 1702 shows a map view 1712 that is seen in
the map window 1641 during the stage 1602, which encompasses the
point of origin 1670 as well as distance labels 1671 and 1672. The
stage shows the camera 1750 moving to a height over the map surface
1730 that corresponds to the zoom level of the map view 1712, as
the camera is viewing a portion of the map surface 1730 that
corresponds to the map view 1712.
[0133] The third stage 1703 shows a map view 1713 that is seen in
the map window 1641 during the stage 1603, which encompasses the
point of origin 1670, the distance labels 1671 and 1672, as well as
the selected maneuver at distance label 1673. The stage shows the
camera 1750 moving even higher to a height that corresponds to the
zoom level of the map view 1713, as the camera is viewing a portion
of the map surface 1730 that corresponds to the map view 1713.
[0134] The fourth stage 1704 shows a map view 1714 that is seen in
the map window 1641 during the stage 1604, which encompasses only
the selected maneuver at distance label 1673, but not the original
point 1670 as well as the other distance labels 1671 and 1672. The
stage shows the camera 1750 moving lower to a height that
corresponds to the zoom level of the map view 1714, as the camera
is viewing a portion of the map surface 1730 that corresponds to
the map view 1714.
[0135] The change of map view applies equally even when the
original position and the position of the selected maneuver are far
apart, such as when the original position is at the starting point
of the route and the selected maneuver is at the destination of the
route. FIG. 18 illustrates changing the view of the map due to the
selection of a maneuver item that is far away from the original
position. FIG. 18 shows the GUI 1600 of the computing device of the
FIG. 16. As in FIG. 16, the mapping application has already
generated the route 1660 and a corresponding list of directions
1610 for traveling to a destination point 1679. The mapping
application has also generated distance labels 1671-1675, which are
displayed along the route 1660 in the map window 1641 as well as
along the list of directions in the pane 1642.
[0136] FIG. 18 shows the change in map view to a far-away maneuver
in four stages 1801-1804. At the first stage 1801, the map window
1641 is centered on the point of origin 1670, which is also the
current position of the mobile device. The user is selecting an
item 1617 in the list of directions 1610. The item 1617 is
associated with the distance label 1675 (22 miles). The item 1617
corresponds to a maneuver that is far away from the current
position 1670 and not in the map window 1641 during the stage 1801.
Furthermore, positions along the route 1660 that correspond to
distance labels 1671-1675 are not in map window 1641.
[0137] At the second stage 1802, the mapping application begins to
change the view of the map by zooming out. The zooming out allows
the map window 1641 to show positions along the route 1660 that
correspond to distance labels 1671 (1 mile) and 1672 (2 miles). The
original position 1670 is also being kept in view. However, the
distance label 1673 (9 miles), the distance label 1674 (21 miles),
and distance label 1675 (22 miles) (which is associated with the
selected maneuver 1617) are still out of the view.
[0138] At the third stage 1803, the mapping application continues
to zoom out until both the original position 1670 and the selected
maneuver 1617 (which correspond to distance label 1675 and is near
the destination point 1679) are both in view of the map 1641.
Because the selected maneuver is very close to the destination
point 1679, the view of the map 1641 in fact encompasses the entire
route 1660.
[0139] Finally, at the fourth stage 1804, the mapping application
zooms in on the position of the maneuver 1617 (and of the distance
label 1675). The original location 1670 and distance labels
1671-1674 that were visible during stage 1803 are no longer in
view.
[0140] FIG. 19 conceptually illustrates the transition between the
different views of the map in FIG. 18 based on the movement of a
virtual camera 1950. FIG. 19 illustrates the movement of the
virtual camera in four stages 1901-1904. Each stage illustrates a
map view that is seen in the map window 1641 in the four stages
1801-1804 of FIG. 18. Each stage also illustrates the virtual
camera 1950 hovering conceptually above a map surface 1930 that
includes the entirety of the route 1660.
[0141] The first stage 1901 shows a map view 1911 that is seen in
the map window 1641 during the stage 1801, which encompasses only
the point of origin 1670. The stage shows the camera 1950 at a
height over the map surface 1930 that corresponds to the zoom level
of the map view 1911, as the camera is viewing a portion of the map
surface 1930 that corresponds to the map view 1911.
[0142] The second stage 1902 shows a map view 1912 that is seen in
the map window 1641 during the stage 1802, which encompasses the
point of origin 1670 as well as distance labels 1671 and 1672. The
stage shows the camera 1950 moving to a height over the map surface
1930 that corresponds to the zoom level of the map view 1912, as
the camera is viewing a portion of the map surface 1930 that
corresponds to the map view 1912.
[0143] The third stage 1903 shows a map view 1913 that is seen in
the map window 1641 during the stage 1803, which encompasses the
point of origin 1670, the distance labels 1671-1674, as well as the
selected maneuver 1617 at distance label 1675. The stage 1903 shows
the camera 1950 moving even higher to a height that corresponds to
the zoom level of the map view 1913. Because the selected maneuver
is very close to the destination point 1679, the map view 1913 in
fact encompasses the entire route 1660. As a result, the camera
1950 is viewing the entirety of the map surface 1930.
[0144] The fourth stage 1904 shows a map view 1914 that is seen in
the map window 1641 during the stage 1804, which encompasses only
the selected maneuver at distance label 1675, but not the original
point 1670, nor the other distance labels 1671-1674. The stage
shows the camera 1950 moving lower to a height that corresponds to
the zoom level of the map view 1914, as the camera is viewing a
portion of the map surface 1930 that corresponds to the map view
1914.
[0145] In some embodiments, if the selected maneuver from the list
of directions is sufficiently close to the current position being
viewed, the selection of the maneuver would cause the view of the
map to pan to the position of the selected maneuver but not zoom
out. In some embodiments, this occurs when the current position and
the new position of the selected maneuver can both be brought into
view at the current zoom level. FIG. 20 illustrates changing the
view of the map due to the selection of a maneuver item that is
near the original view. FIG. 20 shows the GUI 1600 of the computing
device of FIG. 16. As in FIG. 16, the mapping application has
already generated the route 1660 and a corresponding list of
directions 1610 for traveling to a destination point 1679. The
mapping application has also generated distance labels 1671-1675,
which are displayed along the route 1660 in the map window 1641 as
well as along the list of directions in the pane 1642.
[0146] FIG. 20 shows the change in map view to a nearby maneuver in
four stages 2001-2004. At the first stage 2001, the map window 1641
is centered on the point of origin 1670, which is also the current
position of the mobile device. The user is selecting an item 1611
in the list of directions 1610, which is associated with distance
label 1671 (1 mile). The item 1611 corresponds to a maneuver that
is close to the current position 1670 but not yet in view of the
map window 1641.
[0147] At the second stage 2002, the mapping application begins to
change the view of the map by panning toward the position that
corresponds to maneuver item 1611. As illustrated, by panning alone
without zooming out, the map window 1641 is able to bring the
selected maneuver item 1611 (which is associated with distance
label 1671) into view while still keeping the original position
1670 in view.
[0148] At the third stage 2003, the mapping application continues
to pan toward the selected maneuver 1611 (i.e., distance label
1671). The original position 1670 is gradually shifted out of view
of the map window 1641. However, the map window 1641 is still at
the same zoom level.
[0149] Finally, at the fourth stage 2004, the view of the map is
centered at the position of the selected maneuver 1611 (and of the
distance label 1671). The original location 1670 is no longer in
view.
[0150] FIG. 21 conceptually illustrates the transition between the
different views of the map in FIG. 20 based on the movement of a
virtual camera 2150. FIG. 21 illustrates the movement of the
virtual camera in four stages 2101-2104. Each stage illustrates a
map view that is seen in the map window 1641 in the four stages
2001-2004 of FIG. 20. Each stage also illustrates the virtual
camera 2150 hovering conceptually above a map surface 2130 that
includes the entirety of the route 1660.
[0151] The first stage 2101 shows a map view 2111 that is seen in
the map window 1641 during the stage 2001, which encompasses only
the point of origin 1670. The stage shows the camera 2150 at a
height over the map surface 2130 that corresponds to the zoom level
of the map view 2111, as the camera is viewing a portion of the map
surface 2130 that corresponds to the map view 2111.
[0152] The second stage 2102 shows a map view 2112 that is seen in
the map window 1641 during the stage 2002, which encompasses the
point of origin 1670 as well as the distance labels 1671. The stage
shows the camera 2150 remaining at the same height as it was in
stage 2101. It is moving laterally as it pans toward the selected
maneuver.
[0153] The third stage 2103 shows a map view 2113 that is seen in
the map window 1641 during the stage 2003. The camera 2150
continues its lateral movement toward the selected maneuver (at
distance label 1671) and slowly panning away from the origin
position 1670.
[0154] The fourth stage 2104 shows a map view 2114 that is seen in
the map window 1641 during the stage 2004, which encompasses only
the selected maneuver at distance label 1671, but not the original
point 1670. The camera 2150 has completed its lateral movement to
be above the selected maneuver, but it remains at the same height
as it was in stage 2101 without change in zoom level.
[0155] Though not illustrated, once a mapping application has
completed the view changing operation to the selected maneuver from
the list of directions, the user can select another maneuver from
the list of directions, and the mapping application would perform
the same view changing operation toward the newly selected maneuver
by treating the originally selected maneuver as the currently
viewed position. Though each of the selected maneuvers in the
examples of FIGS. 16-21 is associated with a distance label, some
embodiments perform the same view changing operation regardless of
whether the selected maneuver is associated with a distance
label.
[0156] For some embodiments, FIG. 22 conceptually illustrates a
process 2200 for transitioning the view of the map when a maneuver
in the list of directions is selected. In some embodiments, the
process 2200 is performed by a computing device when running a
mapping application as described by reference to FIGS. 16-21. The
process starts after a route has been computed and a list of
directions based on the computed route has been generated, and the
mapping application has provided a map and is viewing the map at a
currently viewed position. This currently viewed position could be
the current position of a traveler, a previously selected maneuver,
or another position specified by the user to the mapping
application.
[0157] The process 2200 receives (at 2210) the position of the
selected maneuver. Based on the received position, the process
determines (at 2220) whether the selected maneuver is near the
currently viewed position. In some embodiments, a selected maneuver
is determined to be "near" the currently viewed position if both
the selected maneuver and the currently viewed position can fit
into the map view at the current zoom level. If the selected
maneuver is near the currently viewed position, the process
proceeds to 2230. Otherwise the process proceeds to 2240.
[0158] At 2230, the process changes the view of the map toward the
selected maneuver by performing a panning operation without
changing the zoom level of the map. An example of such a panning
operation is described above by reference to FIGS. 20-21. After
performing the panning operation, the process proceeds to 2260.
[0159] At 2240, the process changes the view of the map by zooming
out until both the currently viewed position and the selected
maneuver are both in view. The process then zooms (2250) in toward
the selected maneuver at a zoom level that is appropriate for the
selected maneuver. The change of zoom level is described above by
reference to FIGS. 16-19.
[0160] At 2260, the process determines whether another maneuver is
selected from the list of directions. If so, the process makes (at
2270) the position of the selected maneuver the currently viewed
position and returns to 2210. Otherwise, the process 2200 ends.
IV. Electronic Systems
[0161] Many of the above-described features and applications are
implemented as software processes that are specified as a set of
instructions recorded on a computer readable storage medium (also
referred to as computer readable medium). When these instructions
are executed by one or more computational or processing unit(s)
(e.g., one or more processors, cores of processors, or other
processing units), they cause the processing unit(s) to perform the
actions indicated in the instructions. Examples of computer
readable media include, but are not limited to, CD-ROMs, flash
drives, random access memory (RAM) chips, hard drives, erasable
programmable read-only memories (EPROMs), electrically erasable
programmable read-only memories (EEPROMs), etc. The computer
readable media does not include carrier waves and electronic
signals passing wirelessly or over wired connections.
[0162] In this specification, the term "software" is meant to
include firmware residing in read-only memory or applications
stored in magnetic storage which can be read into memory for
processing by a processor. Also, in some embodiments, multiple
software inventions can be implemented as sub-parts of a larger
program while remaining distinct software inventions. In some
embodiments, multiple software inventions can also be implemented
as separate programs. Finally, any combination of separate programs
that together implement a software invention described here is
within the scope of the invention. In some embodiments, the
software programs, when installed to operate on one or more
electronic systems, define one or more specific machine
implementations that execute and perform the operations of the
software programs.
[0163] A. Mobile Device
[0164] The mapping and navigation applications of some embodiments
operate on mobile devices, such as smart phones (e.g.,
iPhones.RTM.) and tablets (e.g., iPads.RTM.). FIG. 23 is an example
of an architecture 2300 of such a mobile computing device. Examples
of mobile computing devices include smartphones, tablets, laptops,
etc. As shown, the mobile computing device 2300 includes one or
more processing units 2305, a memory interface 2310 and a
peripherals interface 2315.
[0165] The peripherals interface 2315 is coupled to various sensors
and subsystems, including a camera subsystem 2320, a wireless
communication subsystem(s) 2325, an audio subsystem 2330, an I/O
subsystem 2335, etc. The peripherals interface 2315 enables
communication between the processing units 2305 and various
peripherals. For example, an orientation sensor 2345 (e.g., a
gyroscope) and an acceleration sensor 2350 (e.g., an accelerometer)
is coupled to the peripherals interface 2315 to facilitate
orientation and acceleration functions.
[0166] The camera subsystem 2320 is coupled to one or more optical
sensors 2340 (e.g., a charged coupled device (CCD) optical sensor,
a complementary metal-oxide-semiconductor (CMOS) optical sensor,
etc.). The camera subsystem 2320 coupled with the optical sensors
2340 facilitates camera functions, such as image and/or video data
capturing. The wireless communication subsystem 2325 serves to
facilitate communication functions. In some embodiments, the
wireless communication subsystem 2325 includes radio frequency
receivers and transmitters, and optical receivers and transmitters
(not shown in FIG. 23). These receivers and transmitters of some
embodiments are implemented to operate over one or more
communication networks such as a GSM network, a Wi-Fi network, a
Bluetooth network, etc. The audio subsystem 2330 is coupled to a
speaker to output audio (e.g., to output voice navigation
instructions). Additionally, the audio subsystem 2330 is coupled to
a microphone to facilitate voice-enabled functions, such as voice
recognition (e.g., for searching), digital recording, etc.
[0167] The I/O subsystem 2335 involves the transfer between
input/output peripheral devices, such as a display, a touch screen,
etc., and the data bus of the processing units 2305 through the
peripherals interface 2315. The I/O subsystem 2335 includes a
touch-screen controller 2355 and other input controllers 2360 to
facilitate the transfer between input/output peripheral devices and
the data bus of the processing units 2305. As shown, the
touch-screen controller 2355 is coupled to a touch screen 2365. The
touch-screen controller 2355 detects contact and movement on the
touch screen 2365 using any of multiple touch sensitivity
technologies. The other input controllers 2360 are coupled to other
input/control devices, such as one or more buttons. Some
embodiments include a near-touch sensitive screen and a
corresponding controller that can detect near-touch interactions
instead of or in addition to touch interactions.
[0168] The memory interface 2310 is coupled to memory 2370. In some
embodiments, the memory 2370 includes volatile memory (e.g.,
high-speed random access memory), non-volatile memory (e.g., flash
memory), a combination of volatile and non-volatile memory, and/or
any other type of memory. As illustrated in FIG. 23, the memory
2370 stores an operating system (OS) 2372. The OS 2372 includes
instructions for handling basic system services and for performing
hardware dependent tasks.
[0169] The memory 2370 also includes communication instructions
2374 to facilitate communicating with one or more additional
devices; graphical user interface instructions 2376 to facilitate
graphic user interface processing; image processing instructions
2378 to facilitate image-related processing and functions; input
processing instructions 2380 to facilitate input-related (e.g.,
touch input) processes and functions; audio processing instructions
2382 to facilitate audio-related processes and functions; and
camera instructions 2384 to facilitate camera-related processes and
functions. The instructions described above are merely exemplary
and the memory 2370 includes additional and/or other instructions
in some embodiments. For instance, the memory for a smartphone may
include phone instructions to facilitate phone-related processes
and functions. Additionally, the memory may include instructions
for a mapping and navigation application as well as other
applications. The above-identified instructions need not be
implemented as separate software programs or modules. Various
functions of the mobile computing device can be implemented in
hardware and/or in software, including in one or more signal
processing and/or application specific integrated circuits.
[0170] While the components illustrated in FIG. 23 are shown as
separate components, one of ordinary skill in the art will
recognize that two or more components may be integrated into one or
more integrated circuits. In addition, two or more components may
be coupled together by one or more communication buses or signal
lines. Also, while many of the functions have been described as
being performed by one component, one of ordinary skill in the art
will realize that the functions described with respect to FIG. 23
may be split into two or more integrated circuits.
[0171] B. Computer System
[0172] FIG. 24 conceptually illustrates another example of an
electronic system 2400 with which some embodiments of the invention
are implemented. The electronic system 2400 may be a computer
(e.g., a desktop computer, personal computer, tablet computer,
etc.), phone, PDA, or any other sort of electronic or computing
device. Such an electronic system includes various types of
computer readable media and interfaces for various other types of
computer readable media. Electronic system 2400 includes a bus
2405, processing unit(s) 2410, a graphics processing unit (GPU)
2415, a system memory 2420, a network 2425, a read-only memory
2430, a permanent storage device 2435, input devices 2440, and
output devices 2445.
[0173] The bus 2405 collectively represents all system, peripheral,
and chipset buses that communicatively connect the numerous
internal devices of the electronic system 2400. For instance, the
bus 2405 communicatively connects the processing unit(s) 2410 with
the read-only memory 2430, the GPU 2415, the system memory 2420,
and the permanent storage device 2435.
[0174] From these various memory units, the processing unit(s) 2410
retrieves instructions to execute and data to process in order to
execute the processes of the invention. The processing unit(s) may
be a single processor or a multi-core processor in different
embodiments. Some instructions are passed to and executed by the
GPU 2415. The GPU 2415 can offload various computations or
complement the image processing provided by the processing unit(s)
2410. In some embodiments, such functionality can be provided using
CoreImage's kernel shading language.
[0175] The read-only-memory (ROM) 2430 stores static data and
instructions that are needed by the processing unit(s) 2410 and
other modules of the electronic system. The permanent storage
device 2435, on the other hand, is a read-and-write memory device.
This device is a non-volatile memory unit that stores instructions
and data even when the electronic system 2400 is off. Some
embodiments of the invention use a mass-storage device (such as a
magnetic or optical disk and its corresponding disk drive,
integrated flash memory) as the permanent storage device 2435.
[0176] Other embodiments use a removable storage device (such as a
floppy disk, flash memory device, etc., and its corresponding
drive) as the permanent storage device. Like the permanent storage
device 2435, the system memory 2420 is a read-and-write memory
device. However, unlike storage device 2435, the system memory 2420
is a volatile read-and-write memory, such a random access memory.
The system memory 2420 stores some of the instructions and data
that the processor needs at runtime. In some embodiments, the
invention's processes are stored in the system memory 2420, the
permanent storage device 2435, and/or the read-only memory 2430.
For example, the various memory units include instructions for
processing multimedia clips in accordance with some embodiments.
From these various memory units, the processing unit(s) 2410
retrieves instructions to execute and data to process in order to
execute the processes of some embodiments.
[0177] The bus 2405 also connects to the input and output devices
2440 and 2445. The input devices 2440 enable the user to
communicate information and select commands to the electronic
system. The input devices 2440 include alphanumeric keyboards and
pointing devices (also called "cursor control devices"), cameras
(e.g., webcams), microphones or similar devices for receiving voice
commands, etc. The output devices 2445 display images generated by
the electronic system or otherwise output data. The output devices
2445 include printers and display devices, such as cathode ray
tubes (CRT) or liquid crystal displays (LCD), as well as speakers
or similar audio output devices. Some embodiments include devices
such as a touchscreen that function as both input and output
devices.
[0178] Finally, as shown in FIG. 24, bus 2405 also couples
electronic system 2400 to a network 2425 through a network adapter
(not shown). In this manner, the computer can be a part of a
network of computers (such as a local area network ("LAN"), a wide
area network ("WAN"), or an Intranet), or a network of networks,
such as the Internet. Any or all components of electronic system
2400 may be used in conjunction with the invention.
[0179] Some embodiments include electronic components, such as
microprocessors, storage and memory that store computer program
instructions in a machine-readable or computer-readable medium
(alternatively referred to as computer-readable storage media,
machine-readable media, or machine-readable storage media). Some
examples of such computer-readable media include RAM, ROM,
read-only compact discs (CD-ROM), recordable compact discs (CD-R),
rewritable compact discs (CD-RW), read-only digital versatile discs
(e.g., DVD-ROM, dual-layer DVD-ROM), a variety of
recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.),
flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.),
magnetic and/or solid state hard drives, read-only and recordable
Blu-Ray.RTM. discs, ultra density optical discs, any other optical
or magnetic media, and floppy disks. The computer-readable media
may store a computer program that is executable by at least one
processing unit and includes sets of instructions for performing
various operations. Examples of computer programs or computer code
include machine code, such as is produced by a compiler, and files
including higher-level code that are executed by a computer, an
electronic component, or a microprocessor using an interpreter.
[0180] While the above discussion primarily refers to
microprocessor or multi-core processors that execute software, some
embodiments are performed by one or more integrated circuits, such
as application specific integrated circuits (ASICs) or field
programmable gate arrays (FPGAs). In some embodiments, such
integrated circuits execute instructions that are stored on the
circuit itself. In addition, some embodiments execute software
stored in programmable logic devices (PLDs), ROM, or RAM
devices.
[0181] As used in this specification and any claims of this
application, the terms "computer", "server", "processor", and
"memory" all refer to electronic or other technological devices.
These terms exclude people or groups of people. For the purposes of
the specification, the terms display or displaying means displaying
on an electronic device. As used in this specification and any
claims of this application, the terms "computer readable medium,"
"computer readable media," and "machine readable medium" are
entirely restricted to tangible, physical objects that store
information in a form that is readable by a computer. These terms
exclude any wireless signals, wired download signals, and any other
ephemeral signals.
V. Map Service Environment
[0182] Various embodiments may operate within a map service
operating environment. FIG. 25 illustrates a map service operating
environment, according to some embodiments. A map service 2530
(also referred to as mapping service) may provide map services for
one or more client devices 2502a-6202c in communication with the
map service 2530 through various communication methods and
protocols. A map service 2530 in some embodiments provides map
information and other map-related data, such as two-dimensional map
image data (e.g., aerial view of roads utilizing satellite
imagery), three-dimensional map image data (e.g., traversable map
with three-dimensional features, such as buildings), route and
direction calculations (e.g., ferry route calculations or
directions between two points for a pedestrian), real-time
navigation data (e.g., turn-by-turn visual navigation data in two
or three dimensions), location data (e.g., where the client device
is currently located), and other geographic data (e.g., wireless
network coverage, weather, traffic information, or nearby
points-of-interest). In various embodiments, the map service data
may include localized labels for different countries or regions.
Localized labels may be utilized to present map labels (e.g.,
street names, city names, points of interest) in different
languages on client devices. Client devices 2502a-6202c may utilize
these map services by obtaining map service data. Client devices
2502a-6202c may implement various techniques to process map service
data. Client devices 2502a-6202c may then provide map services to
various entities, including, but not limited to, users, internal
software or hardware modules, and/or other systems or devices
external to the client devices 2502a-6202c.
[0183] In some embodiments, a map service is implemented by one or
more nodes in a distributed computing system. Each node may be
assigned one or more services or components of a map service. Some
nodes may be assigned the same map service or component of a map
service. A load balancing node in some embodiments distributes
access or requests to other nodes within a map service. In some
embodiments a map service is implemented as a single system, such
as a single server. Different modules or hardware devices within a
server may implement one or more of the various services provided
by a map service.
[0184] A map service in some embodiments provides map services by
generating map service data in various formats. In some
embodiments, one format of map service data is map image data. Map
image data provides image data to a client device so that the
client device may process the image data (e.g., rendering and/or
displaying the image data as a two-dimensional or three-dimensional
map). Map image data, whether in two or three dimensions, may
specify one or more map tiles. A map tile may be a portion of a
larger map image. Assembling together the map tiles of a map
produces the original map. Tiles may be generated from map image
data, routing or navigation data, or any other map service data. In
some embodiments map tiles are raster-based map tiles, with tile
sizes ranging from any size both larger and smaller than a
commonly-used 256 pixel by 256 pixel tile. Raster-based map tiles
may be encoded in any number of standard digital image
representations including, but not limited to, Bitmap (.bmp),
Graphics Interchange Format (.gif), Joint Photographic Experts
Group (.jpg, .jpeg, etc.), Portable Networks Graphic (.png), or
Tagged Image File Format (.tiff). In some embodiments, map tiles
are vector-based map tiles, encoded using vector graphics,
including, but not limited to, Scalable Vector Graphics (.svg) or a
Drawing File (.drw). Some embodiments also include tiles with a
combination of vector and raster data. Metadata or other
information pertaining to the map tile may also be included within
or along with a map tile, providing further map service data to a
client device. In various embodiments, a map tile is encoded for
transport utilizing various standards and/or protocols, some of
which are described in examples below.
[0185] In various embodiments, map tiles may be constructed from
image data of different resolutions depending on zoom level. For
instance, for low zoom level (e.g., world or globe view), the
resolution of map or image data need not be as high relative to the
resolution at a high zoom level (e.g., city or street level). For
example, when in a globe view, there may be no need to render
street level artifacts as such objects would be so small as to be
negligible in many cases.
[0186] A map service in some embodiments performs various
techniques to analyze a map tile before encoding the tile for
transport. This analysis may optimize map service performance for
both client devices and a map service. In some embodiments map
tiles are analyzed for complexity, according to vector-based
graphic techniques, and constructed utilizing complex and
non-complex layers. Map tiles may also be analyzed for common image
data or patterns that may be rendered as image textures and
constructed by relying on image masks. In some embodiments,
raster-based image data in a map tile contains certain mask values,
which are associated with one or more textures. Some embodiments
also analyze map tiles for specified features that may be
associated with certain map styles that contain style
identifiers.
[0187] Other map services generate map service data relying upon
various data formats separate from a map tile in some embodiments.
For instance, map services that provide location data may utilize
data formats conforming to location service protocols, such as, but
not limited to, Radio Resource Location services Protocol (RRLP),
TIA 801 for Code Division Multiple Access (CDMA), Radio Resource
Control (RRC) position protocol, or LTE Positioning Protocol (LPP).
Embodiments may also receive or request data from client devices
identifying device capabilities or attributes (e.g., hardware
specifications or operating system version) or communication
capabilities (e.g., device communication bandwidth as determined by
wireless signal strength or wire or wireless network type).
[0188] A map service may obtain map service data from internal or
external sources. For example, satellite imagery used in map image
data may be obtained from external services, or internal systems,
storage devices, or nodes. Other examples may include, but are not
limited to, GPS assistance servers, wireless network coverage
databases, business or personal directories, weather data,
government information (e.g., construction updates or road name
changes), or traffic reports. Some embodiments of a map service may
update map service data (e.g., wireless network coverage) for
analyzing future requests from client devices.
[0189] Various embodiments of a map service may respond to client
device requests for map services. These requests may be for a
specific maps or portions of a map. Some embodiments format
requests for a map as requests for certain map tiles. In some
embodiments, requests also supply the map service with starting
locations (or current locations) and destination locations for a
route calculation. A client device may also request map service
rendering information, such as map textures or style sheets. In at
least some embodiments, requests are also one of a series of
requests implementing turn-by-turn navigation. Requests for other
geographic data may include, but are not limited to, requests for
current location, wireless network coverage, weather, traffic
information, or nearby points-of-interest.
[0190] A map service, in some embodiments, analyzes client device
requests to optimize a device or map service operation. For
instance, a map service may recognize that the location of a client
device is in an area of poor communications (e.g., weak wireless
signal) and send more map service data to supply a client device in
the event of loss in communication or send instructions to utilize
different client hardware (e.g., orientation sensors) or software
(e.g., utilize wireless location services or Wi-Fi positioning
instead of GPS-based services). In another example, a map service
may analyze a client device request for vector-based map image data
and determine that raster-based map data better optimizes the map
image data according to the image's complexity. Embodiments of
other map services may perform similar analysis on client device
requests and, as such, the above examples are not intended to be
limiting.
[0191] Various embodiments of client devices (e.g., client devices
2502a-6202c) are implemented on different portable-multifunction
device types. Client devices 2502a-6202c utilize map service 2530
through various communication methods and protocols. In some
embodiments, client devices 2502a-6202c obtain map service data
from map service 2530. Client devices 2502a-6202c request or
receive map service data. Client devices 2502a-6202c then process
map service data (e.g., render and/or display the data) and may
send the data to another software or hardware module on the device
or to an external device or system.
[0192] A client device, according to some embodiments, implements
techniques to render and/or display maps. These maps may be
requested or received in various formats, such as map tiles
described above. A client device may render a map in
two-dimensional or three-dimensional views. Some embodiments of a
client device display a rendered map and allow a user, system, or
device providing input to manipulate a virtual camera in the map,
changing the map display according to the virtual camera's
position, orientation, and field-of-view. Various forms and input
devices are implemented to manipulate a virtual camera. In some
embodiments, touch input, through certain single or combination
gestures (e.g., touch-and-hold or a swipe) manipulate the virtual
camera. Other embodiments allow manipulation of the device's
physical location to manipulate a virtual camera. For instance, a
client device may be tilted up from its current position to
manipulate the virtual camera to rotate up. In another example, a
client device may be tilted forward from its current position to
move the virtual camera forward. Other input devices to the client
device may be implemented including, but not limited to, auditory
input (e.g., spoken words), a physical keyboard, mouse, and/or a
joystick.
[0193] Some embodiments provide various visual feedback to virtual
camera manipulations, such as displaying an animation of possible
virtual camera manipulations when transitioning from
two-dimensional map views to three-dimensional map views. Some
embodiments also allow input to select a map feature or object
(e.g., a building) and highlight the object, producing a blur
effect that maintains the virtual camera's perception of
three-dimensional space.
[0194] In some embodiments, a client device implements a navigation
system (e.g., turn-by-turn navigation). A navigation system
provides directions or route information, which may be displayed to
a user. Some embodiments of a client device request directions or a
route calculation from a map service. A client device may receive
map image data and route data from a map service. In some
embodiments, a client device implements a turn-by-turn navigation
system, which provides real-time route and direction information
based upon location information and route information received from
a map service and/or other location system, such as a Global
Positioning Satellite (GPS). A client device may display map image
data that reflects the current location of the client device and
update the map image data in real-time. A navigation system may
provide auditory or visual directions to follow a certain
route.
[0195] A virtual camera is implemented to manipulate navigation map
data according to some embodiments. In some embodiments, the client
devices allow the device to adjust the virtual camera display
orientation to bias toward the route destination. Some embodiments
also allow the virtual camera to navigate turns by simulating the
inertial motion of the virtual camera.
[0196] Client devices implement various techniques to utilize map
service data from map service. Some embodiments implement some
techniques to optimize rendering of two-dimensional and
three-dimensional map image data. In some embodiments, a client
device locally stores rendering information. For instance, a client
stores a style sheet, which provides rendering directions for image
data containing style identifiers. In another example, common image
textures may be stored to decrease the amount of map image data
transferred from a map service. Client devices in different
embodiments implement various modeling techniques to render
two-dimensional and three-dimensional map image data, examples of
which include, but are not limited to: generating three-dimensional
buildings out of two-dimensional building footprint data; modeling
two-dimensional and three-dimensional map objects to determine the
client device communication environment; generating models to
determine whether map labels are seen from a certain virtual camera
position; and generating models to smooth transitions between map
image data. In some embodiments, the client devices also order or
prioritize map service data in certain techniques. For instance, a
client device detects the motion or velocity of a virtual camera,
which if exceeding certain threshold values, lower-detail image
data is loaded and rendered for certain areas. Other examples
include: rendering vector-based curves as a series of points,
preloading map image data for areas of poor communication with a
map service, adapting textures based on display zoom level, or
rendering map image data according to complexity.
[0197] In some embodiments, client devices communicate utilizing
various data formats separate from a map tile. For instance, some
client devices implement Assisted Global Positioning Satellites
(A-GPS) and communicate with location services that utilize data
formats conforming to location service protocols, such as, but not
limited to, Radio Resource Location services Protocol (RRLP), TIA
801 for Code Division Multiple Access (CDMA), Radio Resource
Control (RRC) position protocol, or LTE Positioning Protocol (LPP).
Client devices may also receive GPS signals directly. Embodiments
may also send data, with or without solicitation from a map
service, identifying the client device's capabilities or attributes
(e.g., hardware specifications or operating system version) or
communication capabilities (e.g., device communication bandwidth as
determined by wireless signal strength or wire or wireless network
type).
[0198] FIG. 25 illustrates one possible embodiment of an operating
environment 2500 for a map service 2530 and client devices
2502a-6202c. In some embodiments, devices 2502a, 2502b, and 2502c
communicate over one or more wire or wireless networks 2510. For
example, wireless network 2510, such as a cellular network, can
communicate with a wide area network (WAN) 2520, such as the
Internet, by use of gateway 2514. A gateway 2514 in some
embodiments provides a packet oriented mobile data service, such as
General Packet Radio Service (GPRS), or other mobile data service
allowing wireless networks to transmit data to other networks, such
as wide area network 2520. Likewise, access device 2512 (e.g., IEEE
802.11g wireless access device) provides communication access to
WAN 2520. Devices 2502a and 2502b can be any portable electronic or
computing device capable of communicating with a map service.
Device 2502c can be any non-portable electronic or computing device
capable of communicating with a map service.
[0199] In some embodiments, both voice and data communications are
established over wireless network 2510 and access device 2512. For
instance, device 2502a can place and receive phone calls (e.g.,
using voice over Internet Protocol (VoIP) protocols), send and
receive e-mail messages (e.g., using Simple Mail Transfer Protocol
(SMTP) or Post Office Protocol 3 (POP3)), and retrieve electronic
documents and/or streams, such as web pages, photographs, and
videos, over wireless network 2510, gateway 2514, and WAN 2520
(e.g., using Transmission Control Protocol/Internet Protocol
(TCP/IP) or User Datagram Protocol (UDP)). Likewise, in some
implementations, devices 2502b and 2502c can place and receive
phone calls, send and receive e-mail messages, and retrieve
electronic documents over access device 2512 and WAN 2520. In
various embodiments, any of the illustrated client devices may
communicate with map service 2530 and/or other service(s) 2550
using a persistent connection established in accordance with one or
more security protocols, such as the Secure Sockets Layer (SSL)
protocol or the Transport Layer Security (TLS) protocol.
[0200] Devices 2502a and 2502b can also establish communications by
other means. For example, wireless device 2502a can communicate
with other wireless devices (e.g., other devices 2502b, cell
phones, etc.) over the wireless network 2510. Likewise devices
2502a and 2502b can establish peer-to-peer communications 2540
(e.g., a personal area network) by use of one or more communication
subsystems, such as Bluetooth.RTM.. Device 2502c can also establish
peer to peer communications with devices 2502a or 2502b (not
shown). Other communication protocols and topologies can also be
implemented. Devices 2502a and 2502b may also receive Global
Positioning Satellite (GPS) signals from GPS satellites 2560.
[0201] Devices 2502a, 2502b, and 2502c can communicate with map
service 2530 over one or more wired and/or wireless networks, 2512
or 2510. For instance, map service 2530 can provide map service
data to rendering devices 2502a, 2502b, and 2502c. Map service 2530
may also communicate with other services 2550 to obtain data to
implement map services. Map service 2530 and other services 2550
may also receive GPS signals from GPS satellites 2560.
[0202] In various embodiments, map service 2530 and/or other
service(s) 2550 are configured to process search requests from any
of the client devices. Search requests may include but are not
limited to queries for businesses, addresses, residential
locations, points of interest, or some combination thereof. Map
service 2530 and/or other service(s) 2550 may be configured to
return results related to a variety of parameters including but not
limited to a location entered into an address bar or other text
entry field (including abbreviations and/or other shorthand
notation), a current map view (e.g., user may be viewing one
location on the multifunction device while residing in another
location), current location of the user (e.g., in cases where the
current map view did not include search results), and the current
route (if any). In various embodiments, these parameters may affect
the composition of the search results (and/or the ordering of the
search results) based on different priority weightings. In various
embodiments, the search results that are returned may be a subset
of results selected based on specific criteria including but not
limited to a quantity of times the search result (e.g., a
particular point of interest) has been requested, a measure of
quality associated with the search result (e.g., highest user or
editorial review rating), and/or the volume of reviews for the
search results (e.g., the number of times the search result has
been review or rated).
[0203] In various embodiments, map service 2530 and/or other
service(s) 2550 are configured to provide auto-complete search
results that are displayed on the client device, such as within the
mapping application. For instance, auto-complete search results may
populate a portion of the screen as the user enters one or more
search keywords on the multifunction device. In some cases, this
feature may save the user time as the desired search result may be
displayed before the user enters the full search query. In various
embodiments, the auto complete search results may be search results
found by the client on the client device (e.g., bookmarks or
contacts), search results found elsewhere (e.g., from the Internet)
by map service 2530 and/or other service(s) 2550, and/or some
combination thereof. As is the case with commands, any of the
search queries may be entered by the user via voice or through
typing. The multifunction device may be configured to display
search results graphically within any of the map display described
herein. For instance, a pin or other graphical indicator may
specify locations of search results as points of interest. In
various embodiments, responsive to a user selection of one of these
points of interest (e.g., a touch selection, such as a tap), the
multifunction device is configured to display additional
information about the selected point of interest including but not
limited to ratings, reviews or review snippets, hours of operation,
store status (e.g., open for business, permanently closed, etc.),
and/or images of a storefront for the point of interest. In various
embodiments, any of this information may be displayed on a
graphical information card that is displayed in response to the
user's selection of the point of interest.
[0204] In various embodiments, map service 2530 and/or other
service(s) 2550 provide one or more feedback mechanisms to receive
feedback from client devices 2502a-6202c. For instance, client
devices may provide feedback on search results to map service 2530
and/or other service(s) 2550 (e.g., feedback specifying ratings,
reviews, temporary or permanent business closures, errors etc.);
this feedback may be used to update information about points of
interest in order to provide more accurate or more up-to-date
search results in the future. In some embodiments, map service 2530
and/or other service(s) 2550 may provide testing information to the
client device (e.g., an A/B test) to determine which search results
are best. For instance, at random intervals, the client device may
receive and present two search results to a user and allow the user
to indicate the best result. The client device may report the test
results to map service 2530 and/or other service(s) 2550 to improve
future search results based on the chosen testing technique, such
as an A/B test technique in which a baseline control sample is
compared to a variety of single-variable test samples in order to
improve results.
[0205] While the invention has been described with reference to
numerous specific details, one of ordinary skill in the art will
recognize that the invention can be embodied in other specific
forms without departing from the spirit of the invention. For
instance, many of the figures illustrate various touch gestures
(e.g., taps, double taps, swipe gestures, press and hold gestures,
etc.). However, many of the illustrated operations could be
performed via different touch gestures (e.g., a swipe instead of a
tap, etc.) or by non-touch input (e.g., using a cursor controller,
a keyboard, a touchpad/trackpad, a near-touch sensitive screen,
etc.). In addition, a number of the figures conceptually illustrate
processes. The specific operations of these processes may not be
performed in the exact order shown and described. The specific
operations may not be performed in one continuous series of
operations, and different specific operations may be performed in
different embodiments. Furthermore, the process could be
implemented using several sub-processes, or as part of a larger
macro process.
* * * * *