Temporal Location Sharing

The subject matter of this specification can be implemented in, among other things, a computer-implemented method for sharing location information among a group of participants, the method including generating an invitation to share location information between computing devices of multiple potential participants. The invitation specifies a period of time during which the location information is shared. The method further includes receiving a response to the invitation from each of one or more of the potential participants. Each response includes an identifier for a confirmed participant. The method further includes receiving location information from a computing device of each of the confirmed participants during the period of time. The method further includes providing an interface configured to display, for the period of time, a location of the computing device of each confirmed participant.

TECHNICAL FIELD

This instant specification relates to sharing a location of a mobile computing device.

BACKGROUND

Mobile devices such as mobile phones and smartphones are becoming more and more popular. Many mobile devices have the ability to provide location data, such as data from a global positioning system (GPS), cell towers in a cellular network, or Wi-Fi access points. The location data can then be used by the mobile device or another computing device to determine or estimate the location of the mobile device. Some mobile devices and systems also allow location data to be shared, such as by sharing a GPS track, a geo-tagged image, or by posting a place check-in to a social networking website.

SUMMARY

In one aspect, a computer-implemented method for sharing location information among a group of participants includes generating an invitation to share location information between computing devices of multiple potential participants. The invitation specifies a period of time during which the location information is shared. The method further includes receiving a response to the invitation from each of one or more of the potential participants. Each response includes an identifier for a confirmed participant. The method further includes receiving location information from a computing device of each of the confirmed participants during the period of time. The method further includes providing an interface configured to display, for the period of time, a location of the computing device of each confirmed participant.

Implementations can include any, all, or none of the following features. The method can include providing a link to the invitation and presenting the invitation to one or more of the potential participants in response to requests from the one or more of the potential participants. The method can include receiving a request from one or more of the confirmed participants to display the locations of the confirmed participants and sending, in response to receiving the request to display the locations, a request to the computing device of each confirmed participant for the location of the computing device. Sending the request to the computing device for the location of the computing device can include sending a request for location information determined from a terrestrial-based system if none of the locations of the confirmed participants that sent the requests to display the locations are within a threshold distance of the computing device and sending a request for location information determined from a satellite-based system if one or more of the locations of the confirmed participants that sent the requests to display the locations are within the threshold distance of the computing device. The invitation can include a request to join a meeting event in a calendar system. The period of time for sharing the location information can be based on a time period of the meeting event. The request to join the meeting event can include a control for joining the meeting event and sharing a location, and a control for joining the meeting event without sharing a location.

In one aspect, a computer-implemented method for sharing location information among a group of participants includes receiving one or more user inputs that include information defining a location sharing event and which identify multiple potential participants for the location sharing event. The method further includes generating invitations to share location information between computing devices of the potential participants during the location sharing event. The method further includes presenting the invitations to one or more of the potential participants in response to requests from the potential participants. The method further includes receiving a response to the invitations from each of one or more of the potential participants. Each response includes an identifier for a confirmed participant. The method further includes receiving location information from a computing device of each of the confirmed participants. The method further includes providing an interface configured to display a location of the computing device of each confirmed participant.

Implementations can include any, all, or none of the following features. The method can include receiving a request from one or more of the confirmed participants to display the locations of the confirmed participants and sending, in response to receiving the request to display the locations, a request to the computing device of each confirmed participant for the location of the computing device. Sending the request to the computing device for the location of the computing device can include sending a request for location information determined from a terrestrial-based system if none of the locations of the confirmed participants that sent the requests to display the locations are within a threshold distance of the computing device and sending a request for location information determined from a satellite-based system if one or more of the locations of the confirmed participants that sent the requests to display the locations are within the threshold distance of the computing device. The invitation can include a request to join a meeting event in a calendar system. The period of time for sharing the location information can be based on a time period of the meeting event. The request to join the meeting event can include a control for joining the meeting event and sharing a location, and a control for joining the meeting event without sharing a location.

In one aspect, a computer-implemented system for sharing location information among a group of participants includes at least one interface configured to receive a request, from a client computing device, to generate an invitation to share location information between computing devices of multiple potential participants. The system further includes one or more processors configured to generate the invitation. The processors are further configured to provide the invitation to computing devices of the potential participants. The processors are further configured to receive a response to the invitation from each of a plurality of the potential participants. Each response includes an identifier for a confirmed participant. The processors are further configured to receive a request from one or more of the confirmed participants to display the locations of the confirmed participants. The processors are further configured to send, in response to receiving the request to display the locations, a request to the computing device of each of a first set of one or more of the confirmed participants for location information determined from a first location source if none of the locations of the confirmed participants that sent the requests to display the locations are within a threshold distance of the computing device from the first set. The processors are further configured to send, in response to receiving the request to display the locations, a request to the computing device of each of a second set of one or more of the confirmed participants for location information determined from a second location source if one or more of the locations of the confirmed participants that sent the requests to display the locations are within the threshold distance of the computing device from the second set. The processors are further configured to receive location information from a computing device of each of the confirmed participants. The processors are further configured to provide an interface configured to display a location of the computing device of each confirmed participant.

Implementations can include any, all, or none of the following features. The first location source can have a lower power usage than the second location source. The first location source can be a terrestrial-based location system and the second location source can be a satellite-based location system. Both the first location source and the second location source can be terrestrial-based location systems. The invitation can include a request to join a meeting event in a calendar system. The location information can be shared for a period of time that is based on a time period of the meeting event. The request to join the meeting event can include a control for joining the meeting event and sharing a location, and a control for joining the meeting event without sharing a location.

DETAILED DESCRIPTION

This document describes systems and techniques for temporarily sharing location information among multiple computing devices. A computing system generates an invitation, to be sent from a first participant, to multiple other participants to share location information among the participants. One or more of the other participants respond to the invitation to confirm participation in the location information sharing event. The computing system then shares the location information of the confirmed participants for a limited amount of time. In some implementations, the computing system also throttles the type of location information requested from each of the confirmed participants based on the proximity of the confirmed participants to one another.

The systems and techniques described herein may provide one or more of the following advantages. First, a system can provide for sharing location information among multiple participants without separately authorizing the sharing between each pair of participants. Second, a system can provide for sharing location information among multiple participants without separate authorizations of the sharing in each direction between participants (e.g., first participant authorizes a second participant to see the first participant's location information and the second participant authorizes the first participant to see the second participant's location information). Third, a system can provide for temporarily sharing location information among multiple participants without participants separately revoking authorization of the sharing after the temporal time period has expired. Fourth, a system can provide a reduction in power consumed by a mobile computing device by only requesting location information that consumes a high amount of power when participants are within a threshold distance of one another.

FIG. 1is a schematic diagram that shows an example of a system100for temporarily sharing location information among multiple computing devices. The system100includes a location server system102in communication with multiple computing devices104a-ethrough a network106. The network106can include or be in communication with one or more other networks, such as one or more Wi-Fi networks108a-band one or more cellular telephone networks110a-b. The computing devices104a-eeach provide location data to the location server system102. The location data identifies or can be used to identify a location of each computing device. The location server system102then shares the location information among the computing devices104a-ethat have been identified as participants in a location sharing event.

The computing devices104a-ecan receive location data from one or more of multiple sources. For example, the computing device104dcan include an interface that receives location data from one or more cellular antenna towers in the cellular telephone network110b, such as identifiers of the antennas and time difference of arrival for messages sent between the computing device104dand the antennas. In another example, the computing device104ecan include an interface that receives location data from one or more Wi-Fi transmitters in the Wi-Fi network108b, such as identifiers of the Wi-Fi transmitters and signal strength of the Wi-Fi transmitters as seen by the computing device104e. In another example, the computing devices104b-ccan include interfaces that receive location data from one or more satellites in a global positioning system112. In yet another example, the computing devices104b-ccan receive location data from multiple sources, such as the cellular telephone network110aand the global positioning system112, or the Wi-Fi network108aand the global positioning system112.

The computing devices104a-eor another system, such as the location server system102, then determine a location for the respective computing device using the location data. For example, the computing devices104a-eor the location server system102can lookup an identifier of a cellular antenna or Wi-Fi transmitter in a database that correlates identifiers to locations. In another example, time difference of arrival data can be used to perform a multilateration operation to determine a location for a computing device. In another example, Wi-Fi signal strength can be used to refine a location of a computing device (e.g., the signal strength may be proportional to a distance between the computing device and the Wi-Fi transmitter, or a particular pattern of signal strengths may indicate a particular location).

A computing device, such as the computing device104a, sends a request to the location server system102to generate an invitation for a location sharing event. The request can include information about the location sharing event, such as a time period for the event and recipients for the invitation.

In some implementations, the request from the computing device104ato the location server system102can be a multi-step process between the computing device104aand the location server system102. For example, the location server system102can present a graphical user interface (GUI) that repeatedly prompts a user of the computing device104ato input or select additional information regarding the location sharing event.

In some implementations, all or substantially all of the information needed to request generation of the invitation can be input or selected at the computing device104aprior to the computing device104asending the initial request to the location server system102. For example, after receiving the initial request, the location server system102can provide a GUI to the computing device104athat allows the user of the computing device104ato input or select optional information for generating the invitation.

Once the information for the location sharing event has been received, the location server system102generates the invitation and provides the invitation to the recipients identified in the request. For example, the request may include identifiers for email recipients, instant messaging (IM) recipients, or text message recipients. The identifiers can include actual addresses used for communication (e.g., email addresses, IM user names, or telephone numbers for text messages) or the identifiers included in the request can be used to lookup the actual addresses used for communication.

In some implementations, the location server system102generates the invitation and provides the invitation, or a link to the invitation, to the requester at the computing device104a. The requester can then provide the invitation, or the link to the invitation, the recipients. For example, the requester at the computing device104acan forward a Uniform Resource Locator (URL) to the recipients that directs the recipients to stored invitation information for the location sharing event at the location server system102.

The invitation includes information describing the location sharing event. For example, the invitation can specify the time period during which the location information is shared, such as a particular range of dates and/or times of day, or a length of time measured from the current time or from another event. The invitation may indicate, to each recipient, the other recipients that have been invited to or that have accepted (e.g., in the case of the link to the location invitation stored at the location server system102) the location sharing event. In some implementations, the invitation provides a recipient with an option to join the location sharing event and view location information during the location sharing event without providing location information.

One or more of the recipients provide responses to the location server system102that confirm participation in the location sharing event. During the time period for the location sharing event, the computing devices104b-eof the confirmed participants provide location information to the location server system102. The location server system102then provides locations of the computing devices104b-eto participants that request the location information. In some implementations, the computing devices104b-eprovide location information to the location server system102in response to a request from the location server system102for the location information. For example, the location server system102can request location information from the computing devices104b-ein response to a request from a participant to view the locations of the computing devices104b-ethat are participating in the event.

In some implementations, one or more the computing devices104b-ecan receive location data from multiple sources. For example, the computing device104bcan receive location data from the Wi-Fi network108aand the global positioning system112and the computing device104ccan receive location data from the cellular telephone network110aand the global positioning system112. In some implementations, receiving location data from the global positioning system112consumes more power than receiving location data from either the cellular telephone network110aor the Wi-Fi network108a. Although, in some implementations, location data from the global positioning system112may have a higher accuracy and/or precision than location data the cellular telephone network110aand/or the Wi-Fi network108a. In some implementations, where multiple location data sources are available, the location server system102can request location data from a specific source.

For example, the location server system102can determine that each of the computing devices104c-eis at least a minimum threshold distance from the computing device104b. As a result, the location server system102specifies in the request for location information that a less accurate and/or precise type of location data source may be used, such as the Wi-Fi network108a. In some implementations, the less accurate and/or precise type of location data source may be a terrestrial location system and the more accurate and/or precise type of location data source may be a satellite-based location system. In some implementations, the computing device104bmay chose a least accurate and/or precise type of location data source from among multiple terrestrial location systems, such as a Wi-Fi network and a cellular telephone network. In response to receiving the request for location information, the computing device104bthen retrieves the location data from the specified type of location data source (e.g., the Wi-Fi network108a) and sends location information to the location server system102.

Alternatively, the computing device104bcan use a more accurate and/or precise location data source, such as the global positioning system112, if the computing device104bdetermines that a condition for overriding the requested type of data source has been met. For example, a user of the computing device104bcan specify that the computing device104buse a particular location data source regardless of the request from the location server system102. In another example, the computing device104bcan determine that a power source (e.g., a vehicle power adapter or a mains power system) other than an internal power source, such as a battery, is currently being used. In response, the computing device104bcan override the request to use a specific type of location data source and use a most accurate and/or precise location data source that is currently available, such as the global positioning system112.

FIG. 2Ashows an example of a graphical user interface (GUI)200for generating an invitation to temporarily share location information among multiple computing devices. In some implementations, the GUI200is a web page that can be provided by a system, such as the location server system102, to a web browser application at a desktop computing device, such as the computing device104a. The GUI200includes an indication202that a user named gobo is currently accessing the location sharing system. The GUI200also includes a map204that shows a location206of the user gobo and locations of other users that share location information with the user gobo.

The GUI200includes user input controls in which the user can input parameters for creating an invitation for a location sharing event. In particular, the GUI200includes a name field208in which the user can input a name, such as “Sports bar @ six,” for a location sharing event where the user intends to meet some friends at a sports bar in the near future. The GUI200includes a type field210with which the user can select a sharing type for the location sharing event. Sharing types can include, for example, a best available location (e.g., always use a global positioning system if available), a neighborhood-level location (e.g., “Mission District, San Francisco”), a city-level location (e.g., “Sausalito”), a country-level location (e.g., “France”), and a place-level location (e.g., “The Local Coffee Shop”).

The GUI200includes an auto-expiration field212in which the user can input or select a time period for the location sharing event. In some implementations, the user can select from a list of time periods, such as a particular number of minutes, hours, or days from the current time. In some implementations, the user can specify a particular date and time range, such as July fourth, 2011, from one pm to three pm, or July fourth, 2011, at noon until July sixth, 2011, at two pm. For example, the GUI200can include a calendar control (not shown) that presents a graphical representation of a calendar in which the user can select dates and/or times for the auto-expiration field212.

The GUI200includes a message field214in which the user can input a personal message or note to be presented to the recipients of the location sharing event. When the user has finished inputting the parameters for the location sharing event, the user can select a control216to send the request to generate the location invitation to the location server system102.

FIG. 2Bshows an example of a GUI220for presenting a list222of location sharing events. The GUI220also includes a map224that shows the location of the current user as well as other users that are sharing location information with the current user.

The items in the list222each include a title226a-cfor the respective location event, such as “Sports bar @ six,” “For NYC visitors,” and “Shared with mom.” Each of the items in the list222also includes an indication228a-cof the duration for the respective location sharing event, such as “Expires in 59 minutes,” “Expires on Friday, March 18, 9:00 pm,” and “Never expires.” In some implementations, if the location sharing event is not yet active (e.g., a start date and/or time has yet been reached), then the item can indicate when the location event will start, such as “Starts in 59 minutes” or “Starts on Thursday, March 18 at 6:00 am.” If the location sharing event has an associated note, such as a message entered in the message field214, then the GUI220also presents a note control230. A user can select the note control230to request that the message for the location sharing event be presented in the GUI220.

Lastly, each of the items in the list222includes one or more controls232a-cfor stopping the sharing of location data and for showing and/or closing a link to the location sharing event. For example, a user can select the “stop sharing” portion of the control232cto stop sharing location information with participants in the “shared with mom” event. In some implementations, selecting the control to stop sharing also stops the sharing of location information for the other participants of the event as well. In some implementations, only a request from the initiator of the location sharing event can stop or postpone location for all participants of the location sharing event.

A user can select the “show link” portion for either of the controls232b-cto send a request for the GUI220to present a link for inviting other participants to the location sharing event. The “Sports bar @ six” event currently displays a link234for inviting other participants as well as a “close link” portion of the control232afor closing the link234. In some implementations, the GUI220automatically presents the link234in response to the user selecting the control216to generate the “Sports bar @ six” event.

The user can copy an address from the link234and use another application, such as an email application or an instant messaging application, to send the address to other participants for the event. The address can be, for example, a Uniform Resource Locator (URL) or Uniform Resource Identifier (URI) that includes domain and/or path information for the location sharing system and/or the event. In addition to domain and path information, the address can include parameters, such as an identifier for the event and/or the user initiating the event. In some implementations, the parameters can be encrypted.

One or more recipients of the address can then accept the invitation by selecting the address. In some implementations, a user interface presented in response to selecting the address may prompt the potential participant for additional information, such as login information and/or sharing preferences. In some implementations, a user interface presented in response to selecting the address may show information related to the invitation, such as other participants that have accepted the invitation, and times and dates for the location sharing event.

FIG. 2Cshows an example of a GUI240for presenting a list242of location sharing participants. The GUI240also includes a map244that shows the location of the current user as well as users that are participating in location sharing events with the current user. For example, a first item246ain the list242includes information about the associated user, such as a name or nickname of the user (e.g., mokey), a general location (e.g., Mountain View, Calif.), an indication of how recently the location for the user was updated (e.g., thirty-five minutes ago), and a picture or avatar for the user. The map244includes location markers that correspond to items from the list242that are currently within the area shown in the map244. For example, the first item246ahas a marker248aon the map244and a second item246bhas a marker248bon the map244. The markers can also include information about the associated user, such as a picture or avatar, and a name or nickname.

FIG. 2Dshows an example of a GUI260for creating a calendar and location sharing event. The GUI260includes multiple fields262a-gfor configuring parameters of the event, such as a title, a place for the event, a calendar with which the event is associated, a description, a color for displaying the event, reminders for the event, and an availability status. The GUI260also includes one or more fields for configuring location sharing for the event.

For example, the GUI260can include a location sharing control264. A user can toggle the location sharing control264to a checked or active state to enable location sharing for the event. In some implementations, enabling location sharing by a meeting organizer alone does not automatically enable location sharing from all participants. For example, a recipient of the calendar invitation can be presented with a user interface that has separate controls for accepting the invitation with and without sharing location information. In addition, the user interface for the calendar invitation recipient can also present information for the invitation, such as identities of the participants, identities of the invitees, and the times and dates for the sharing of location information. In some implementations, a recipient can specify a default response to location sharing requests, such as automatically accepting location sharing requests, automatically accepting requests from a particular user address or identifier (e.g., gobo@example.com), and/or automatically accepting requests from a particular domain of addresses or identifiers (e.g., example.com).

The GUI260includes a date and time control266for specifying a date and time or a range of dates and times for the calendar event. This date and time information can also be used by the location server system102to determine the times during which location information is shared between the participants. For example, the location server system102can share location information between the participants for the duration of the meeting. The location server system102can also share the location information for a particular amount of time before and/or after the appointment. In some implementations, the GUI260or another GUI (e.g., a GUI that allows configuration of default settings for the user or the calendar) includes controls for specifying the amount of time before and/or after an appointment to share location information.

The GUI260includes a privacy control268that allows a user to choose between a default privacy setting for the user and/or calendar, and public or private settings. In some implementations, the choices for the default privacy setting are also public and private. In some implementations, a private event indicates that the calendar information is only shared with the participants of the event. The shared calendar information can include, for example, location information for the participants of the event. The location server system102can authenticate users prior to sharing location information when an event is set to the private setting. In some implementations, a public event indicates that location information can be shared with users who are not participants in the event. For example, the event organizer, or another participant, can provide an address (e.g., similar to the address from the link234) of the event to another user.

The GUI260also includes a participants control270. A user can input addresses or identifiers for event participants into the participants control270. Upon generating the event and, in some implementations, upon updating the event, the location server system102sends the generated event invitation to the potential participants listed in the participants control270. As previously described, the invitation and/or a user interface accessible from the invitation (e.g., a web page or application window resulting from selecting a link in the invitation) can include one or more controls that allow the recipient to accept the invitation with or without sharing location information.

The GUI260further includes multiple permissions controls that allow the initiator of the event, or in some cases another user, to specify permissions for the event participants. For example, a modify permissions control272specifies whether or not the participants can modify parameters for the event. In addition, an invitation permissions control274specifies whether or not the participants can invite additional participants. Finally, a list permissions control276specifies whether the participants can see the list of participants for the event. In some implementations, the list permissions control276also determines whether participants can see the locations of the other participants as apposed to only the meeting organizer seeing the locations of the participants and/or each participant only seeing the location of the meeting organizer.

While the preceding GUIs have shown user interfaces typically suited to a desktop type of computing device, the location server system102and/or client computing devices can also provide user interfaces for other types of computing devices. For example, the system100can include user interfaces for mobile computing devices (e.g., a smartphone) and/or touch screen computing devices (e.g., a touch screen smartphone or a tablet computing device).

FIG. 3Ashows an example of a mobile computing device300and a GUI302for generating an invitation to temporarily share location information among multiple computing devices. In some implementations, the interface includes a touch screen with which a user can make inputs to the GUI302. In some implementations, the mobile computing device300also includes other interfaces, such as one or more dedicated touch screen controls and one or more hardware buttons for interacting with the GUI302.

The GUI302currently presents an interface for a map application. In some implementations, the interface for the map application is a web application provided over a network by a server, such as the location server system102. In some implementations, the map application is a local application installed at the mobile computing device300. The GUI302for the map application includes a map area304that shows a map for a particular geographic location. The GUI302is currently displaying a menu306. A user can request that the GUI302display the menu306, for example, by selecting a menu button308. The menu306includes a share location control310. A user can select the share location control310to begin a series of interfaces for inputting parameters of a location sharing event.

FIG. 3Bshows an example of a GUI322that informs the user that the user is about to share location information. The GUI322can be overlaid, for example, on a map area324. The GUI322includes a continue control326that, when selected by the user, causes the mobile computing device300to proceed with the generation of the location sharing event. The GUI322also includes a control328to prevent the map application from displaying the warning regarding the sharing of location information for subsequent generation of location sharing events.

FIG. 3Cshows an example of a GUI330that prompts the user to select or input a time period for the location sharing event. Again, the GUI330can be presented as an overlay on a map area332of the map application. The GUI330includes options for sharing location information for an ensuing amount of time, such as the next sixty minutes, six hours, twenty-four hours, and three days. The GUI330also includes an option for inputting a custom time period. For example, the user can select the custom time period option to open a GUI for selecting a specific starting date and time for the location sharing event as well as an ending date and time. In addition, the GUI330includes an option for sharing location information for a particular point on map. For example, whenever the user's computing device is determined to be within a particular distance from the point on the map, then the location server system102shares the location information with the event participants.

FIG. 3Dshows an example of a GUI334that presents an alternate way in which a user can input parameters for a location sharing event. The GUI334includes a title input control336in which a user can input a title for the location sharing event. For example, upon selecting the title input control336, the GUI334can present an onscreen soft keyboard (not shown).

The GUI334also includes a sharing type control338that allows the user to select the type of location information to be shared. For example, the user can select a best available location, which will request the most accurate location information available from the devices of the participants. In another example, the user can select another location type that is less specific than the best available location (e.g., neighborhood, city, country, or place), which will allow less specific location data, such as a location derived from cellular tower and/or Wi-Fi network locations.

The GUI334includes a time period control340. Similarly to the GUI330, the time period control340allows the user to select or input a time period during which the location server system102receives and shares location information among the participants. The GUI334includes an input control342that allows the user to input an optional message that can be displayed to potential participants that view the location sharing invitation. Finally, the GUI334includes a control344that the user can select to complete the parameter input process and to proceed with creation of the invitation.

FIG. 3Eshows an example of a GUI346that presents options for methods of sharing the location sharing invitation. The GUI346can be presented in response to, for example, the GUI330and/or the GUI334. The methods of sharing include links to applications provided by the mobile computing device300for sending information to another computing device. In some implementations, the GUI346can be dynamically updated based on the particular applications that are installed at the mobile computing device300. The methods of sharing can include, for example, a text message or instant message, a Bluetooth transfer, an email, a social network posting or message, a microblog posting, and/or a Quick Response (QR) code. In the example, shown here the user has selected the email option, as indicated by the finger print.

FIG. 3Fshows an example of a GUI348for emailing a link to an invitation for a location sharing event to one or more potential participants. In some implementations, the GUI348is provided by an email application that is separate from the map application. For example, the map application can pass information for a link356to the event and a subject line for the email message to the email application. The GUI348includes an address input control350in which the user can input one or more email addresses of the potential participants using a touch screen keyboard352. The user can select a submit control354to send the invitation to the potential participants. A recipient can then select the select the link356to accept the invitation and/or view information for the invitation, such identities of the accepted participants, and the times and dates for the location sharing event.

FIG. 4Ashows an example of a GUI400for a map application. The GUI400includes a message402that indicates the map application is currently sharing location information. The GUI400also includes a notification404in a notification bar406. The notification404also indicates that the map application is currently sharing location information. The notification404continues to be displayed in the notification bar406even when the mobile device switches to another application. A user can open the notification bar406, for example by dragging the notification bar406downward, to see more detailed information for the notification404.

FIG. 4Bshows an example of a GUI408that presents an expanded notification bar410. The expanded notification bar410includes an item412that indicates location sharing is currently active. A user can select the item412to open a user interface for managing location sharing events.

FIG. 4Cshows an example of a GUI414for managing location sharing. The GUI414presents a list416of one or more active location sharing events. Each active location sharing event includes a title, an indication of when the location sharing event expires, and a stop control418. A user can select the stop control418to instruct the map application to stop sharing location information for the selected event. In some implementations, selecting the stop control418stops sharing of location information for all participants of the sharing event. A user can select a location sharing event from the list416to see more detailed information for the event and to manage the event.

FIG. 4Dshows an example of a GUI420for managing a location sharing event. The GUI420includes information about the location event, such as a title and an indication of when the active location sharing event expires. The GUI420also includes a stop control422, which a user can select to stop sharing location information for the event. The GUI420presents a time control424, which a user can select to modify the time period during which the location information is shared for the event. For example, the user can extend or reduce the end time, or input a specific end date and time. The GUI420allows the user to add more participants using a share control426. For example, selecting the share control426may can initiate the GUI346described above. The GUI420also presents a preview control428. For example, a user can select the preview control428to see a representation of what the participant will see, such as a preview of an invitation and/or a map of participant locations from the perspective of the participant.

FIG. 5Ashows an example of a GUI500for receiving an invitation for a location sharing event. In this example, the GUI500is provided by a text messaging or instant messaging application. Other applications can be used for receiving a location sharing invitation, such as an email application or the applications shown in the GUI346. The GUI500presents a message502for the location sharing invitation from the user gobo. The user can select a link504in the message to accept the invitation.

FIG. 5Bshows an example of a GUI506for selecting an application to process the link504. The GUI506includes a list of controls for applications that can process the link504, such as a map application control508and a browser application control510. In some implementations, the location server system102can provide a web application that is accessible by a browser application at a client computing device and/or a map application at a client computing device can communicate with the location server system102. In the example shown here, the user selects the map application control508. The user can also select a default control512to specify that future selections of the link504automatically use the map application as apposed to, for example, the browser application.

FIG. 5Cshows an example of a GUI514for presenting shared location information. The GUI514can be provided by, for example, a map application. The map application receives location information for participants in a location sharing event and presents the location information in a map area516. The map application uses the location information from each participant to present multiple icons518a-cfor the participants in the map area516. A user can select an icon, such as the icon518a, to display additional information for the participant.

FIG. 5Dshows an example of a GUI520for presenting additional information about a participant in a location sharing event. The GUI520presents a name or nickname for the participant, a city and/or region in which the participant is located, and an indication of when the location sharing event will expire. A user can select a share back control522to share location information back to the event initiator and/or other participants. The GUI520also includes a map control524for showing the icon for the participant in the map area516. A user can select a directions control526to request directions to the location of the participant from the location of the current user. The user can also hide the location information for the participant by selecting a hide control528.

FIG. 6is flow chart that shows an example of a process600for temporarily sharing location information among multiple computing devices. The process600may be performed, for example, by a system such as the system100. For clarity of presentation, the description that follows uses the system100as an example for describing the process600. However, another system, or combination of systems, may be used to perform the process600. The process600begins with a computing device sending (602) location sharing parameters to a location server system.

The location server system receives the parameters and generates (604) an invitation to share location information between computing devices of multiple potential participants. The invitation specifies a limited time for which the location information is shared.

The location server system provides (606) the invitation for sending to computing devices of the potential participants. For example, the location server system102can provide the link234in the GUI220and/or the link in the GUI348to the computing device that requested generation of the event. The requesting computing device can then send (608) the invitation to potential participants. In another example, the location server system102can send the invitation to the potential participants.

The location server system receives (610) a response to the invitation from each of one or more of the potential participants. Each response includes an identifier for a confirmed participant. For example, a map application at a computing device of the participant can access the location sharing event using a link in the invitation. The map application can then provide information regarding the participant, such as an identifier and/or authentication information that identifies the participant. One or more of the participants then accept (612) the invitation for the location sharing event.

A computing device sends (614) a request to display location information for the event. For example, the computing device can be associated with the original event requestor and/or another participant.

The location server system receives (616) the requests from the confirmed participants to display the locations of the confirmed participants. In response, the location server system sends (618) a request to the computing device of each confirmed participant for the location of the computing device.

Each participant computing device determines (620) a location for the respective computing device and sends the location information to the location server system. The location server system receives (622) location information from each of the confirmed participants during the limited time and in response to the request from the location server system for the location information.

The location server system provides (624) an interface configured to display, for the limited time, a location of a computing device of each confirmed participant. The computing device receives the interface information and presents (626) the interface on a display device. For example, the location server system102can provide location information for presentation by a standalone map application at a client computing device. In another example, the location server system102can provide the location information in a web page or information for display in a web page by a web application at the client computing device.

The computing device700includes a processor702, a memory704, a storage device706, a high-speed interface708connecting to the memory704and multiple high-speed expansion ports710, and a low-speed interface712connecting to a low-speed expansion port714and the storage device706. Each of the processor702, the memory704, the storage device706, the high-speed interface708, the high-speed expansion ports710, and the low-speed interface712, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor702can process instructions for execution within the computing device700, including instructions stored in the memory704or on the storage device706to display graphical information for a GUI on an external input/output device, such as a display716coupled to the high-speed interface708. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

The memory704stores information within the computing device700. In some implementations, the memory704is a volatile memory unit or units. In some implementations, the memory704is a non-volatile memory unit or units. The memory704may also be another form of computer-readable medium, such as a magnetic or optical disk.

The storage device706is capable of providing mass storage for the computing device700. In some implementations, the storage device706may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.

A computer program product can be tangibly embodied in an information carrier. The computer program product may contain instructions that, when executed, perform one or more methods, such as those described above. The computer program product can also be tangibly embodied in a computer- or machine-readable medium, such as the memory704, the storage device706, or memory on the processor702.

The high-speed interface708manages bandwidth-intensive operations for the computing device700, while the low-speed interface712manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In some implementations, the high-speed interface708is coupled to the memory704, the display716(e.g., through a graphics processor or accelerator), and to the high-speed expansion ports710, which may accept various expansion cards (not shown). In the implementation, the low-speed interface712is coupled to the storage device706and the low-speed expansion port714. The low-speed expansion port714, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.

The computing device700may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server718, or multiple times in a group of such servers. In addition, it may be implemented in a personal computer such as a laptop computer720. It may also be implemented as part of a rack server system722. Alternatively, components from the computing device700may be combined with other components in a mobile device (not shown), such as a mobile computing device750. Each of such devices may contain one or more of the computing device700and the mobile computing device750, and an entire system may be made up of multiple computing devices communicating with each other.

The mobile computing device750includes a processor752, a memory764, an input/output device such as a display754, a communication interface766, and a transceiver768, among other components. The mobile computing device750may also be provided with a storage device, such as a micro-drive or other device, to provide additional storage. Each of the processor752, the memory764, the display754, the communication interface766, and the transceiver768, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.

The processor752can execute instructions within the mobile computing device750, including instructions stored in the memory764. The processor752may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor752may provide, for example, for coordination of the other components of the mobile computing device750, such as control of user interfaces, applications run by the mobile computing device750, and wireless communication by the mobile computing device750.

The processor752may communicate with a user through a control interface758and a display interface756coupled to the display754. The display754may be, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display) display or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface756may comprise appropriate circuitry for driving the display754to present graphical and other information to a user. The control interface758may receive commands from a user and convert them for submission to the processor752. In addition, an external interface762may provide communication with the processor752, so as to enable near area communication of the mobile computing device750with other devices. The external interface762may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory764stores information within the mobile computing device750. The memory764can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. The memory764may include, for example, flash memory and/or NVRAM memory (non-volatile random access memory).

An expansion memory774may also be provided and connected to the mobile computing device750through an expansion interface772, which may include, for example, a SIMM (Single In Line Memory Module) card interface. The expansion memory774may provide extra storage space for the mobile computing device750, or may also store applications or other information for the mobile computing device750. Specifically, the expansion memory774may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, the expansion memory774may be provide as a security module for the mobile computing device750, and may be programmed with instructions that permit secure use of the mobile computing device750. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a secure manner.

In some implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The computer program product can be a computer- or machine-readable medium, such as the memory764, the expansion memory774, or memory on the processor752. In some implementations, the computer program product can be received in a propagated signal, for example, over the transceiver768or the external interface762.

The mobile computing device750may communicate wirelessly through the communication interface766, which may include digital signal processing circuitry where necessary. The communication interface766may provide for communications under various modes or protocols, such as GSM voice calls (Global System for Mobile communications), SMS (Short Message Service), EMS (Enhanced Messaging Service), or MMS messaging (Multimedia Messaging Service), CDMA (code division multiple access), TDMA (time division multiple access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000, or GPRS (General Packet Radio Service), among others. Such communication may occur, for example, through the transceiver768using a radio-frequency. In addition, short-range communication may occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, a GPS (Global Positioning System) receiver module770may provide additional navigation- and location-related wireless data to the mobile computing device750, which may be used as appropriate by applications running on the mobile computing device750.

The mobile computing device750may also communicate audibly using an audio codec760, which may receive spoken information from a user and convert it to usable digital information. The audio codec760may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of the mobile computing device750. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on the mobile computing device750.

The mobile computing device750may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone780. It may also be implemented as part of a smartphone782, personal digital assistant, or other similar mobile device.

For situations in which the systems discussed here use personal information about users, the users may be provided with an opportunity to opt in/out of programs or features that use personal information (e.g., information about a user's preferences or a user's current location or previous location). In addition, certain data may be made anonymous in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be made anonymous so that the no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, zip code, or state level), so that a particular location of a user cannot be determined.