Improved geofence selection system

By using an improved geofencing selection system, which generates bounding boxes and convex hulls using periodically sampled location data, detects overlaps, and loads relevant media content, the system solves the problem of content presentation delays caused by inaccurate location data in traditional geofencing technology, and enables more accurate and timely location-related notifications.

CN116193361BActive Publication Date: 2025-12-23SNAP INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310191320.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-03-06
Filing Date
2019-03-06
Publication Date
2025-12-23
Estimated Expiration
2039-03-06

AI Technical Summary

Technical Problem

Traditional geofencing technology suffers from inaccurate and inconsistent location data, leading to delays or failures in the delivery of media content and hindering the effective use of location-related notifications provided by geofencing.

Method used

The improved geofence selection system generates bounding boxes or convex hulls by periodically sampling location data from client devices, detects overlap between boundaries and geofences, loads relevant media content, and optimizes content presentation using timestamps and social network connections.

Benefits of technology

It improves the location accuracy and timeliness of content presentation in geofencing systems, ensuring that media content loads promptly when users enter or leave the geofence, and enhancing the effectiveness of location-related notifications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116193361B_ABST
    Figure CN116193361B_ABST
Patent Text Reader

Abstract

The present invention relates to improvements to systems and methods for determining a current location of a client device and for identifying and selecting an appropriate geofence based on the current location of the client device. The improved geofence selection system performs operations including associating media content with a geofence that encloses a portion of a geographic region, sampling location data from a client device, defining a boundary based on the sampled location data from the client device, detecting an overlap between the boundary and the geofence, retrieving the media content associated with the geofence, and loading the media content at a storage location of the client device in response to detecting the overlap.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of patent application with the application date of March 6, 2019, application number 201980016917.1, and the title of “Improved Geofence Selection System”.

[0002] CLAIM OF PRIORITY

[0003] This application claims the benefit of priority to U.S. Patent Application Serial No. 15 / 912,769, filed March 6, 2018, which is hereby incorporated by reference in its entirety. TECHNICAL FIELD

[0004] Embodiments of the present disclosure generally relate to mobile computing technology, and more particularly, but not exclusively, to systems for determining the location of a client device for the purpose of setting a geofence. BACKGROUND

[0005] A “geofence” is a virtual perimeter created around a real-world geographic location. Conventional geofence services provide merchants or other businesses with the ability to create geofences around the locations of the merchants or businesses. When a user, with a location-aware device (e.g., a smartphone), enters or exits the perimeter of one of these geofences, a notification related to the location can be sent to the user’s device. Such notifications are often used as a marketing tool to entice nearby users to patronize the locations. Some social media platforms set geofences for location-based functionality, such as providing collections of location-based social media content, or providing a thematic location overlay or tag to enhance social media posts.

[0006] Conventional methods of delivering location-related notifications using geofences have inherent limitations. For example, the positioning accuracy of a device is often limited due to poor or slow network connectivity. As a result, a device can enter and exit the perimeter of a geofence before the conventional geofence system is actually able to deliver content to the device. Additionally, the location data retrieved from the device can not accurately define the location of the device at all. BRIEF DESCRIPTION OF DRAWINGS

[0007] To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the figure number in which that element is first introduced.

[0008] Figure 1 is a block diagram illustrating an example messaging system for exchanging data (e.g., messages and associated content) over a network, in accordance with some embodiments, in which the messaging system includes a geofence selection system.

[0009] Figure 2is a block diagram illustrating further details regarding a messaging system, in accordance with example embodiments.

[0010] Figure 3 is a block diagram illustrating modules of a geofence selection system, in accordance with certain example embodiments.

[0011] Figure 4 is a flowchart illustrating a method for retrieving and loading media content on a client device, in accordance with certain example embodiments.

[0012] Figure 5A is a graph of location data sampled by a geofence selection system, in accordance with certain example embodiments.

[0013] Figure 5B is a graph of boundaries generated based on location data sampled by a geofence selection system, in accordance with certain example embodiments.

[0014] Figure 5C is a graph of boundaries generated based on location data sampled by a geofence selection system, in accordance with certain example embodiments.

[0015] Figure 6 is a flowchart illustrating a method for retrieving and loading media content on a client device, in accordance with certain example embodiments.

[0016] Figure 7 is a table including location data and timestamps, in accordance with certain example embodiments.

[0017] Figure 8 is a flowchart illustrating a method for retrieving and loading media content at a client device, in accordance with certain example embodiments.

[0018] Figure 9 is a graph of boundaries generated based on location data sampled by a geofence selection system, in accordance with certain example embodiments.

[0019] Figure 10 is a block diagram illustrating a representative software architecture that can be used in conjunction with the various hardware architectures described herein and that can be implemented as a representative software package or framework in accordance with some example embodiments.

[0020] Figure 11 is a block diagram illustrating components of a machine, according to some example embodiments, able to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein.

[0021] DETAILED DESCRIPTION

[0022] As noted above, one inherent limitation of traditional geofencing technology is the inaccuracy and inconsistency of location data that can be obtained from a client device. In addition, the goal of traditional geofencing is to load and display content on a client device within a geofence as soon as possible. Due to the aforementioned inaccuracy and inconsistency of location data received from a client device, the presentation of media content can be delayed or not delivered at all.

[0023] Accordingly, the present invention is directed to improvements in systems and methods for determining a current location of a client device and for identifying and selecting an appropriate geofence based on the current location of the client device. The improved geofence selection system performs operations that include associating media content with a geofence that encloses a portion of a predetermined geographic region, sampling location data from a client device, defining a boundary based on the sampled location data from the client device, detecting an overlap between the boundary and the geofence, obtaining the media content associated with the geofence, and loading the media content at a storage location of the client device in response to detecting the overlap.

[0024] In some embodiments, the improved geofence selection system samples location data from a client device at predetermined intervals (e.g., 30 seconds, 1 minute, 5 minutes, etc.) over a period of time (e.g., 24 hours). For example, the system can perform a ping operation on the client device every interval to obtain location data, such as global positioning system (GPS) data, cell triangulation data, etc. In further embodiments, the improved geofence selection system samples location data by obtaining the location data from a client in response to certain user actions performed by a user of the client device. For example, the user can provide input to the client device to check-in to a particular location, or to interact with certain media content presented on the client device, or to launch an application. In response to detecting the user input, the improved geofence selection system obtains location data from the client device and assigns a time stamp to the location data.

[0025] The location data can also include time data, which the improved geofence selection system can utilize to time stamp the obtained location data. In this embodiment, the improved geofence selection system indexes and stores the location data in a database along with the time stamp.

[0026] In response to the sampled location data, the improved geofence selection system generates a boundary that indicates a general location of the client device. The boundary defined by the improved geofence selection system based on the location data includes a "bounding box." In geometry, the minimal or smallest bounding or enclosing box of a set of points (S) in N dimensions is the smallest metric (area, volume or hyper volume in higher dimensions) box in which all the points lie. When other types of metrics are used, the minimal box is often called a "minimal perimeter bounding box" or "bounded box" accordingly.

[0027] In further embodiments, the boundary defined by the improved geofence system based on the location data includes a "convex hull." In mathematics, the convex hull or convex envelope of a set of X points in Euclidean plane or Euclidean space (or more generally, in an affine space over the real numbers) is the smallest convex set containing X. For example, when X is a bounded subset of a plane, the convex hull can be visualized as the shape enclosed by a rubber band stretched around X.

[0028] In further embodiments, the improved geofence system calculates an average value based on the location data taken from the client device, and defines the boundary based on the average value of the location data.

[0029] In further embodiments, the improved geofence system identifies a center point of the client device based on the location data, and generates a boundary that expands a predetermined radius from the center point and encompasses the location data of the client device.

[0030] The improved geofence system detects an overlap and intersection of the boundary that identifies the location of the client device with one or more geofences within the geographic region. In response to detecting the overlap and intersection of the boundary that defines the location of the client device with the one or more geofences, the improved geofence system takes media content associated with the one or more geofences and loads the media content at a storage location of the client device.

[0031] In some embodiments, a larger boundary, such as a map tile, can encompass one or more geofences. In this embodiment, the improved geofence system can detect an overlap of the boundary that defines the location of the client device with an edge of the map tile. In response to detecting the overlap of the boundary that defines the location of the client device with the edge of the map tile, the improved geofence system identifies one or more geofences within the map tile and takes media content associated with the one or more geofences. The taken media content can then be loaded to the client device.

[0032] In further embodiments, in response to detecting an overlap of a boundary defining a location of a client device and an edge of a map tile, the improved geofencing system identifies one or more geofences within the map tile and then detects whether a social network connection of a user of the client device is within any of the one or more geofences. Upon identifying a social network connection of a user of the client device within a geofence from the one or more geofences, the improved geofencing system retrieves media content associated with the geofence and loads it to the client device.

[0033] In some example embodiments, the improved geofencing system detects a current location of a client device and accesses a database containing sampled location data from the client device to predict a future location of the client device. For example, the improved geofencing system can determine a trajectory of the client device based on the sampled location data and timestamps of the sampled location data and can identify one or more geofences based on the trajectory. In further embodiments, the improved geofencing system can identify relationships between locations identified by the location data based on the timestamps. For example, the improved geofencing system can determine that when a user is at a first location (e.g., a place of work), the user always goes to a second location (e.g., a home) within a period of time. The improved geofencing system can identify these relationships based on a current location of the client device and a current time, based on a next predicted location of the client device, and load media content at the client device.

[0034] Figure 1 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes a plurality of client devices 102, each hosting a plurality of applications including a messaging client application 104. Each messaging client application 104 is communicatively coupled to other instances of the messaging client application 104 and to a messaging server system 108 via a network 106 (e.g., the Internet).

[0035] Accordingly, each messaging client application 104 is able to communicate and exchange data with another messaging client application 104 and with the messaging server system 108 via the network 106. The data exchanged between the messaging client applications 104 and the data exchanged between the messaging client applications 104 and the messaging server system 108 includes functions (e.g., commands to invoke functions) as well as payload data (e.g., text, audio, video, or other multimedia data).

[0036] The messaging server system 108 hosts a variety of applications and systems that facilitate communication between a plurality of devices. The messaging server system 108 includes: a web server system 110; a chat server system 112; a messaging server system 114; a social network system 126; a content server system 116; and a database server system 118. The database server system 118 hosts a plurality of databases that store information used by the messaging server system 108. The databases include: a user database 120; a content database 122; a social graph database 124; and an ad database 128. The messaging server system 108 is communicatively coupled to a network 106 (e.g., the Internet) via web interface 130. The messaging server system 108 also serves as the component that processes messages between the messaging client application 104 on the client device 102 and the messaging server system 108. The messaging server system 108 communicates with the messaging client application 104 via a network 106. The messaging server system 108 provides a variety of services for the messaging client application 104, including two-way electronic communication between client devices 102. The messaging server system 108 supports the provision of various services and operations to the messaging client application 104. The operations include sending data to the messaging client application 104, receiving data from the messaging client application 104, and processing data generated by the messaging client application 104. In some embodiments, the data includes, by way of example, message content, client device information, geolocation information, media annotations and overlays, message content persistence conditions, social network information, and live event information. Other data is also used in other embodiments. The exchange of data within the messaging system 100 is invoked and controlled through functionality available via the GUI (graphical user interface) of the messaging client application 104.

[0037] The messaging server system 108 supports the provision of various services and operations to the messaging client application 104. The operations include sending data to the messaging client application 104, receiving data from the messaging client application 104, and processing data generated by the messaging client application 104. In some embodiments, the data includes, by way of example, message content, client device information, geolocation information, media annotations and overlays, message content persistence conditions, social network information, and live event information. Other data is also used in other embodiments. The exchange of data within the messaging system 100 is invoked and controlled through functionality available via the GUI (graphical user interface) of the messaging client application 104.

[0038] Turning now specifically to the messaging application server system 108, an application programming interface (API) server 110 is coupled to, and provides a programmatic interface to, the application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 in which is stored data associated with messages processed by the application server 112.

[0039] The application program interface (API) server 110 specifically is responsible for receiving and sending message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the application program interface (API) server 110 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by a messaging client application 104 to invoke functionality of the application server 112. The application program interface (API) server 110 exposes various functions supported by the application server 112, including account registration, login functionality, sending messages from a particular messaging client application 104 to another messaging client application 104 via the application server 112, sending media files (e.g., images or videos) from a messaging client application 104 to the messaging server application 114, and setting up a collection of media data (e.g., a story) for possible access by another messaging client application 104, retrieval of a friend list for a user of the client device 102, retrieval of a collection, retrieval of messages and content, adding and deleting friends from a social graph, locating friends within a social graph, opening and applying events (e.g., application events related to the messaging client application 104).

[0040] The application server 112 hosts a number of applications and subsystems, including the messaging server application 114, an image processing system 116, a social network system 122, and a geofence selection system 124. The messaging server application 114 implements a number of message processing technologies and functions, particularly related to the aggregation and other processing of content (e.g., textual and multimedia content) contained in messages received from multiple instances of the messaging client application 104. As will be described in further detail, textual and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). The messaging server application 114 can then provide these collections to the messaging client application 104. The messaging server application 114 can also perform other processor and memory intensive data processing at the server side, in view of the hardware requirements for this processing.

[0041] The application server 112 also includes an image processing system 116 that is dedicated to performing various image processing operations, typically related to images or videos received within the payloads of messages of the messaging server application 114.

[0042] The social networking system 122 supports various social networking functions and services and makes these functions and services available to the messaging server application 114. To this end, the social networking system 122 maintains and accesses the entity graph 304 within the database 120. Examples of functions and services supported by the social networking system 122 include the identification of other users of the messaging system 100 with which a particular user has a relationship or is“following,” as well as the identification of other entities and interests of a particular user.

[0043] The application servers 112 are communicably coupled to a database server 118, which facilitates access to a database 120 in which is stored data associated with messages processed by the messaging server application 114.

[0044] Figure 2 is a block diagram illustrating further details regarding the messaging system 100, in accordance with example embodiments. In particular, the messaging system 100 is shown to include the messaging client application 104 and the application servers 112, which in turn embody several subsystems, namely a short timer system 202, a collection management system 204, and a notation system 206.

[0045] The short timer system 202 is responsible for performing temporary access to content allowed by the messaging client application 104 and the messaging server application 114. To this end, the short timer system 202 incorporates a number of timers that selectively display and enable access to messages and related content via the messaging client application 104 based on duration and display parameters associated with the messages, collections of messages (e.g., SNAPCHAT STORIES), or graphical elements. Further details regarding the operation of the short timer system 202 are provided below.

[0046] The collection management system 204 is responsible for managing collections of media (e.g., collections of text, images, video, and audio data). In some examples, collections of content (e.g., messages including images, videos, text, and audio) can be organized into“event galleries” or“event stories.” Such collections can be available for a specified period of time, such as the duration of an event to which the content relates. For example, content related to a concert can be provided as a“story” for the duration of the concert. The collection management system 204 can also be responsible for publishing an icon to the user interface of the messaging client application 104 that provides a notification of the existence of a particular collection.

[0047] The collection management system 204 additionally includes a curation interface 208 that allows collection managers to manage and curate particular content collections. For example, the curation interface 208 enables event organizers to curate a collection of content related to a particular event (e.g., to delete inappropriate content or redundant messages). Additionally, the collection management system 204 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In certain embodiments, users can be paid to include user-generated content in a collection. In this case, the curation interface 208 operates to automatically pay a user for use of the user's content.

[0048] The annotation system 206 provides various functionality that enables users to annotate or otherwise modify or edit media content associated with a message. For example, the annotation system 206 provides functionality related to the generation and publication of media overlays that overlay media of messages processed by the messaging system 100. The annotation system 206 is operable to provide media overlays (e.g., SNAPCHAT filters) to the messaging client application 104 based on a geographic location of the client device 102. In another example, the annotation system 206 is operable to provide media overlays to the messaging client application 104 based on other information (e.g., social network information of a user of the client device 102). The media overlays can include audio and visual content as well as visual effects. Examples of audio and visual content include pictures, text, logos, animations and sound effects, and animated face models, such as those generated by the geo-fence selection system 124. Examples of visual effects include color overlays. The audio and visual content or visual effects can be applied to a media content item (e.g., a photo) at the client device 102. For example, the media overlays include text that can be overlaid on a photo taken by the client device 102 that is generated. In another example, the media overlays include a location identification overlay (e.g., Venice Beach), a live event name or merchant name overlay (e.g., Beachside Café). In another example, the annotation system 206 uses a geographic location of the client device 102 to identify a media overlay that includes a name of a merchant at the geographic location of the client device 102. The media overlays can include other indicia associated with the merchant. The media overlays can be stored in the database 120 and can be accessed through the database server 118.

[0049] In one example embodiment, the annotation system 206 provides a user-based publishing platform that enables users to select a geographic location on a map and upload content associated with the selected geographic location. The user can also specify a context under which the particular media overlay should be provided to other users. The annotation system 206 generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geographic location.

[0050] In another example embodiment, annotation system 206 provides a merchant-based publishing platform that enables merchants to select specific media coverage associated with geographic locations through a bidding process. For example, annotation system 206 associates the media coverage of the highest-bidder merchant with the corresponding geographic location within a predetermined time period.

[0051] Figure 3 This is a block diagram illustrating the components of a geofencing selection system 124, which, according to some example embodiments, is configured to associate media content with a geofencing, sample location data from a client device, define boundaries to identify the location of the client device, detect overlap between the boundaries and the geofencing, and retrieve and load the geofencing-related media content at the client device's storage location. The geofencing selection system 124 is shown as including a geofencing module 302, a positioning module 304, a communication module 306, and a presentation module 308, all configured to communicate with each other (e.g., via a bus, shared memory, or a switch). Any one or more of these modules can be implemented using one or more processors 310 (e.g., by configuring the one or more processors to perform the functions described for that module), and thus one or more processors 310 may be included.

[0052] Any one or more of the described modules may be implemented using individual hardware (e.g., one or more processors 310 of a machine) or a combination of hardware and software. For example, any module described in the geofencing selection system 124 may physically include an arrangement of one or more processors 310 (e.g., a subset or a subset of one or more processors of a machine) configured to perform the operations described herein for that module. As another example, any module of the geofencing selection system 124 may include software, hardware, or both, that configures an arrangement of one or more processors 310 (e.g., within one or more processors of a machine) to perform the operations described herein for that module. Thus, different modules of the geofencing selection system 124 may include and configure different arrangements of the processors 310 or a single arrangement of the processors 310 at different points in time. Furthermore, any two or more modules of the geofencing selection system 124 may be combined into a single module, and the functionality described herein for a single module may be subdivided into multiple modules. Moreover, modules described herein as being implemented within a single machine, database, or device may be distributed across multiple machines, multiple databases, or multiple devices, according to various example embodiments.

[0053] Figure 4 This is a flowchart illustrating a method 400 for obtaining and loading media content on a client device according to certain example embodiments. The operation of method 400 can be described by the above references. Figure 3The described modules are executed by the processor 202. As Figure 4 As shown, the method 400 includes one or more operations 402, 404, 406, 408, and 410.

[0054] At operation 402, the geofence module 302 receives user input to associate media content with a geofence that encloses a portion of a geographic region. For example, the media content can include image data, video data, filters, messages, and interactive media content. The user can associate the media content with the geofence such that the media content is only accessible or available to client devices that are located within the geofence or that cross the edge of the geofence at a certain time.

[0055] At operation 404, the positioning module 304 samples location data from the client device. In some example embodiments, the positioning module 304 samples location data from the client device 102 at predetermined intervals (e.g., 30 seconds, 1 minute, 5 minutes, etc.) over a period of time (e.g., 24 hours). For example, the system can perform a ping operation on the client device at each interval to retrieve location data, such as global positioning system (GPS) data, cell triangulation data, etc. In other embodiments, the positioning module 304 samples location data by retrieving location data from the client device 102 in response to certain user actions performed by the user of the client device 102. For example, the user can provide input to the client device 102 to check-in to a particular location, or to interact with certain media content presented on the client device, or to launch an application. In response to detecting the user input, the positioning module 304 retrieves location data from the client device 102 and assigns a time stamp to the location data.

[0056] At operation 406, the positioning module 304 defines a boundary based on the location data retrieved from the client device 102 over the predetermined period of time, where the boundary defined by the positioning module 304 provides an indication of the location of the client device 102 over the predetermined period of time. In some embodiments, the boundary defined by the positioning module 204 based on the location data retrieved from the client device 102 includes one or more of: a bounding box, an average location, a radius, and a convex hull.

[0057] At operation 408, the positioning module 304 detects an overlap between the geofence and the boundary that identifies the location of the client device 102 over the predetermined period of time. In response to detecting the overlap between the boundary and the geofence, at operation 410, the communication module 306 loads the media content of the geofence at a storage location of the client device 102, where the presentation module 308 can generate and cause display of a presentation of the media content.

[0058] Figure 5Ais a diagram 500A of location data (e.g., location data 502) sampled from a client device 102 by a positioning module 304 of a geofence selection system 124 as discussed in method 400 and in accordance with certain example embodiments. Diagram 500A includes a depiction of a geofence 506 that encloses a portion of a predetermined geographic region.

[0059] Figure 5B is a diagram 500B of a boundary 504B generated by a positioning module 304 of a geofence selection system 124 based on sampled location data (e.g., location data 502) as discussed in method 400 and in accordance with certain example embodiments. As shown, boundary 504B can intersect or overlap with geofence 506. Figure 5B

[0060] Boundary 504B may, for example, include a "bounding box." In geometry, the smallest or minimal bounding or enclosing box of a set (S) of points in N dimensions is the smallest metric (area, volume, or hyper volume in higher dimensions) box in which all points lie.

[0061] Figure 5C is a diagram 500C of another embodiment of a boundary 504C generated by a positioning module 304 of a geofence selection system 124 based on sampled location data (e.g., location data 502) as discussed in method 400 and in accordance with certain example embodiments. As seen in Figure 5C

[0062] Figure 6 is a flowchart illustrating a method 600 for retrieving and loading media content at a client device (e.g., client device 102) in accordance with certain example embodiments. The operations of method 600 can be performed by modules described above with reference to method 400. As shown, Figure 3 Figure 6 the method 600 includes one or more operations 602, 604, 606, and 608. The operations of method 600 can be performed as a subroutine or portion of any of the operations of method 400. Figure 4

[0063] At operation 602, the positioning module 304 associates the sampled location data from the client device 102 with a time of day within a database associated with a user of the client device 102. The positioning module 304 can timestamp the location data retrieved from the client device 102 such that the timestamp indicates a time at which the location data was retrieved from the client device.

[0064] ​​​​In operation 604, the positioning module 304 identifies a location (e.g., the past location of client device 102) based on the time of day (e.g., the current time of day or the time of day to come). For example, location data with timestamps can indicate that on most days, client device 102 is in a certain location (e.g., workplace) at a certain time (e.g., noon).

[0065] In operation 606, the geofencing module 302 identifies one or more geofences that intersect with the boundary defining the location of the client device 102 at a specific time of day, based on sampled location data in the database.

[0066] In operation 608, the geofencing module acquires media content associated with one or more geofences, and in operation 610, the communication module 306 loads the acquired media content at the client device 102 at a time earlier than a specific time of day corresponding to the historical location data.

[0067] Figure 7 Is it about Figure 6 The operation of method 600 is discussed, as well as Table 700, which includes location data and timestamps according to certain example embodiments. As shown in Table 700, location data can be organized based on corresponding timestamps, where the timestamps indicate the time of day when the client device 102 is at a specific location.

[0068] Figure 8 This is a flowchart illustrating a method 800 for obtaining and loading media content on a client device according to certain example embodiments. The operation of method 800 can be described by the above references. Figure 3 The module described is used for execution. For example... Figure 8 As shown, method 800 includes one or more operations 802, 804, 806, and 808. The operations of method 800 can be used as... Figure 4 Any subroutine or part of the operation of method 400 is executed.

[0069] In some embodiments as described above, one or more geofences may be surrounded by a larger edge (such as a map tile) that defines its own geographic area. In operation 802, the positioning module 304 detects an overlap between the edge of the map tile surrounding the geographic area and the boundary that identifies the location of the first client device (e.g., client device 102A).

[0070] In response to detecting the overlap between the edge of the map tile and the boundary that identifies the location of the first client device (e.g., client device 102A), at operation 804, the geofence module 302 identifies one or more geofences that are within the edge of the map tile. In some embodiments, the communication module 306 can load media content associated with the one or more geofences that are within the edge of the map tile at the client device 102A in response to detecting the overlap.

[0071] In further embodiments, as discussed in operation 806, the geofence module 302 identifies a second client device (e.g., client device 102B) that is within the first geofence that is located within the edge of the map tile. For example, the second client device (e.g., client device 102B) can be associated with a user of the first client device (e.g., client device 102A) based on a social network connection.

[0072] In response to detecting the social media connection between the user of the second client device and the user of the first client device, the geofence module 302 retrieves media content associated with the first geofence and loads the media content at the first client device (e.g., client device 102A).

[0073] Figure 9 FIG. 900 is a diagram 900 of a boundary 502 generated based on location data sampled by the geofence selection system 124 in accordance with certain example embodiments. The diagram 900 further includes a map tile 902 (e.g., a geographic region predefined by an edge of a map tile) and a depiction of one or more geofences including a first geofence 904 and a second geofence 906, where a user of the second client device 102B is within the first geofence 904.

[0074] As explained in the method 800 of Figure 8 In response to detecting the overlap between the boundary 502 of the map tile 902 and the boundary that identifies the location of the first client device (e.g., client device 102A), the geofence module 302 identifies one or more geofences that are within the edge 902 (i.e., geofences 904 and 906), as discussed at operation 804.

[0075] In further embodiments, as discussed at operation 806, the geofence module 302 identifies a second client device (e.g., client device 102B) that is within the first geofence 904 that is located within the edge 902. In response to detecting the overlap between the boundary 502 and the edge of the map tile 902, the geofence module retrieves media content for the geofence 904 and loads the media content to the client device 102A.

[0076] Software Architecture

[0077] Figure 10 This is a block diagram illustrating example software architecture 1006, which can be used in conjunction with various hardware architectures described herein. Figure 10 This is a non-limiting example of software architecture, and it is understood that many other architectures can be implemented to facilitate the functionality described herein. Software Architecture 1006 can be implemented in, for example... Figure 11 The execution is performed on the hardware of machine 1100, which includes processor 1104, memory 1114, and I / O components 1118, etc. A representative hardware layer 1052 is shown and can represent, for example... Figure 11 The machine 1100. A representative hardware layer 1052 includes a processing unit 1054 having associated executable instructions 1004. The executable instructions 1004 represent executable instructions of the software architecture 1006, including implementations of the methods, components, etc., described herein. Hardware layer 1052 also includes memory and / or storage modules, memory / storage device 1056, which also has executable instructions 1004. Hardware layer 1052 may also include other hardware 1058.

[0078] exist Figure 10 In the exemplary architecture, software architecture 1006 can be conceptualized as a stack of layers, where each layer provides specific functionality. For example, software architecture 1006 may include layers such as operating system 1002, library 1020, application 1016, and presentation layer 1014. Operationally, application 1016 and / or other components within a layer can invoke application programming interface (API) API calls 1008 through the software stack and receive responses in response to API calls 1008. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile or dedicated operating systems may not provide framework / middleware 1018, while other operating systems may provide such layers. Other software architectures may include additional or different layers.

[0079] Operating system 1002 can manage hardware resources and provide public services. Operating system 1002 may include, for example, a kernel 1022, services 1024, and drivers 1026. Kernel 1022 can serve as an abstraction layer between hardware and other software layers. For example, kernel 1022 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. Services 1024 can provide other public services to other software layers. Drivers 1026 are responsible for controlling the underlying hardware or interface connections with the underlying hardware. For example, drivers 1026 include display drivers, camera drivers, etc. Drivers, flash drives, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi drivers, audio drivers, power management drivers, etc., depending on the hardware configuration.

[0080] The libraries 1020 provide a common infrastructure that can be used by the applications 1016 and / or other components and / or layers. The libraries 1020 provide functionality that allows other software components to perform tasks without having to perform as

[0081] The frameworks / middleware 1018 provide a higher-level common infrastructure that can be used by the applications 1016 and / or other software components / modules. For example, the frameworks / middleware 1018 can provide various graphical user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks / middleware 1018 can provide a broad spectrum of other APIs that can be used by the applications 1016 and / or other software components / modules, some of which can be specific to a particular operating system 1002 or platform.

[0082] The applications 1016 include built-in applications 1038 and / or third-party applications 1040. Examples of representative built-in applications 1038 can include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and / or a game application. A third-party application 1040 can include an application developed by an entity other than the vendor of the particular platform. The third-party application 1040 can be a mobile software running on a mobile operating system such as the IOS TM or ANDROID TM software development kit (SDK). The third-party application 1040 can invoke the API calls 1008 provided by the mobile operating system such as the operating system 1002 to facilitate functionality described herein. TM TM

[0083] ​​​Application 1016 can use built-in operating system functions (e.g., kernel 1022, services 1024, and / or drivers 1026), libraries 1020, and frameworks / middleware 1018 to create a user interface to interact with the system's user. Alternatively or additionally, in some systems, interaction with the user may occur through a presentation layer (such as rendering layer 1014). In these systems, the application / component "logic" can be separated from the aspects of the application / component that interact with the user.

[0084] Figure 11 This is a block diagram illustrating components of a machine 1100, according to some example embodiments, capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any or more methods discussed herein. Specifically, Figure 11 A graphical representation of machine 1100 in the form of an example computer system is shown, within which instructions 1110 (e.g., software, programs, applications, applets, application software, or other executable code) can be executed to cause machine 1100 to perform any one or more of the methods discussed herein. Thus, instructions 1110 can be used to implement the modules or components described herein. Instructions 1110 transform the general, non-programmable machine 1100 into a specific machine 1100 programmed to perform the described and illustrated functions in the described manner. In alternative embodiments, machine 1100 operates as a standalone device or can be coupled (e.g., networked) to other machines. In a networked deployment, machine 1100 can operate as a server machine or client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Machine 1100 may include, but is not limited to, server computers, client computers, personal computers (PCs), tablet computers, laptop computers, netbooks, set-top boxes (STBs), personal digital assistants (PDAs), entertainment media systems, cellular phones, smartphones, mobile devices, wearable devices (e.g., smartwatches), smart home devices (e.g., smart appliances), other smart devices, network devices, network routers, network switches, network bridges, or any machine capable of sequentially or otherwise executing instructions 1110, which specify the actions to be taken by machine 1100. Furthermore, although only a single machine 1100 is shown, the term "machine" may also be considered as a collection of machines that individually or jointly execute instructions 1110 to perform any or more of the methods discussed herein.

[0085] The machine 1100 can include processors 1104, memory / storage 1106, and I / O components 1118, which can be configured to communicate with one another via a bus 1102. The memory / storage 1106 can include a main memory 1114, such as a random access memory (RAM) or other dynamic storage device, and a static memory 1116, both of which can be accessed by the processors 1104, such as via the bus 1102. The static memory 1116 and the memory 1114 store instructions 1110 embodying any one or more of the methodologies or functions described herein. The instructions 1110 can also reside, completely or

[0086] The I / O components 1118 can include various components to receive input, provide output, produce output, transmit information, exchange information, acquire measurements, and so forth. The specific I / O components 1118 included in the particular machine 1100 will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I / O components 1118 can include many other components that are not shown in FIG. 1. The I / O components 1118 are grouped as shown primarily for Figure 11 The I / O components 1118 can include various components to receive input, provide output, produce output, transmit information, exchange information, acquire measurements, and so forth. The specific I / O components 1118 included in the particular machine 1100 will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I / O components 1118 can include many other components that are not shown in FIG. 1. The I / O components 1118 are grouped as shown primarily for

[0087] In further example embodiments, the I / O components 1118 can include biometric components 1130, motion components 1134, environmental components 1136, or position components 1138, among a myriad of others. For example, the biometric components 1130 can include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. The motion components 1134 can include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 1136 can include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detect concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 1138 can include location sensor components (e.g., a Global Position System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude can be derived), orientation sensor components (e.g., magnetometers), and the like.

[0088] Communication can be enabled via a variety of technologies. The I / O components 1118 can include communication components 1140 operable to couple the machine 1100 to networks 1132 or devices 1120 via coupling 1122 and coupling 1124, respectively. For example, the communication components 1140 can include a network interface component or another suitable device to interface with a network 1132. In further examples, the communication components 1140 include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth®components (e.g., Bluetooth®low energy), Wi-Fi®components, and other communication components to provide communication via other modalities. The devices 1120 can be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)). ), components to provide communication via other modalities. The devices 1120 can be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

[0089] Moreover, the communication components 1140 can detect identifiers or include components operable to detect identifiers. For example, the communication components 1140 can include radio frequency identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar codes, multi-dimensional bar codes such as quick response (QR) codes, Aztec codes, Data Matrix, Datagiyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar codes, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information can be derived via the communication components 1140, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via cellular signal triangulation, location via detection of a NFC beacon signal, and so forth.

[0090] Vocabulary

[0091] A "carrier signal" in this context refers to any intangible medium that is capable of storing, encoding, or carrying the instructions for execution by a machine and includes digital or analog communications signals or other intangible media to facilitate communication of such instructions. Instructions can be transmitted or received by the network interface device using a transmission medium via a network using any one of a number of well-known transfer protocols.

[0092] A "client device" in this context refers to any machine that interfaces with a communications network to access resources from a server or other client device. A client device can be, without limitation, a mobile phone, desktop computer, laptop computer, portable digital assistants (PDAs), smart phones, tablets, ultra-books, netbooks, notebooks, multi-processor systems, microprocessor-based or programmable consumer electronics, game consoles, set-top boxes, or any other communication device that a user can use to access a network.

[0093] A "communication network" in this context refers to one or more portions of a network that can be an ad hoc network, intranet, extranet, virtual private network (VPN), local area network (LAN), wireless LAN (WLAN), wide area network (WAN), wireless WAN (WWAN), metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. A network, another type of network, or a combination of two or more such networks. For example, a network or a portion of a network can include a wireless or cellular network, and the coupling can be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile Communications (GSM) connection, or other types of cellular or wireless couplings. In this example, the coupling can implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (lxRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data Rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standards setting organizations, other long range protocols, or other data transfer technology.

[0094] A "short-lived message" in this context refers to a message that is accessible during a time-limited duration. A short-lived message can be text, an image, a video, etc. The access time for a short-lived message can be set by the message sender. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting technique, the message is transient.

[0095] A "machine-readable medium" in this context refers to a component, device, or other tangible media capable of storing instructions and data temporarily or permanently, and can include, but is not limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)) and / or any suitable combination thereof. The term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) capable of storing instructions that are executed by a machine. The term "machine-readable medium" shall also be taken to include any medium or combination of media that is capable of storing instructions (e.g., code) that are executed by a machine such that the instructions, when executed by one or more processors of the machine, cause the machine to perform any one or more of the methodologies described herein. Accordingly, a "machine-readable medium" is a single storage device or article of manufacture or a "cloud" storage system or storage network that includes multiple storage devices or articles of manufacture. The term "machine-readable medium" excludes signals per se.

[0096] "Component" in this context means a device, physical entity or logic having boundaries defined by the functional or structural relationship of components or by the functional or technical designation of complemented and coordinated relationships in systems analysis, and which performs particular tasks or has particular functionality in a computer program. Components can be combined to execute machine processes. Components can be a encapsulated piece of functional hardware, and a portion of a program, generally performing a particular functionality related to the overall computer program. Components can constitute either software components (e.g., code embodied on a machine-readable medium) or hardware components. A "hardware component" is a tangible unit capable of performing certain operations and can be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware components of a computer system (e.g., a processor or a group of processors) can be configured by software (e.g., an application or application portion) as a hardware component that operates to perform certain operations as described herein. A hardware component can also be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware component can include dedicated circuitry or logic that is permanently configured to perform certain operations. A hardware component can be a special-purpose processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). A hardware component can also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware component can include software executed by a general-purpose processor or other programmable processor. The software configured hardware component can be specifically adapted for the task at hand, and the general-purpose processor can be specifically adapted to execute the software. In some embodiments, a hardware component can be a machine or a portion thereof. The machine can be a computer system that can further include instructions executable by the machine, where the instructions are stored in a machine-readable storage medium. The machine can include processors, memory, input devices, and output devices, and it can be implemented using hardware, software, firmware or any suitable combination thereof.Where there are multiple hardware components present at the same time, communication can be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware components. In embodiments where multiple hardware components are configured or instantiated at different times, communication between the hardware components can be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware components have access. For example, one hardware component can perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware component can later access the memory device to retrieve and process the stored output. The hardware components can also initiate communications with input or output devices, and can operate on resources (e.g., collections of information). The various operations of example methods described herein can be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented components that operate to perform one or more operations or functions described herein. As used herein, “processor- implemented component” refers to a hardware component implemented with one or more processors. Similarly, the methods described herein can be at least partially processor- implemented, with a particular processor or processors being an example of hardware. For example, at least some of the operations of a method can be performed by one or more processors or processor-implemented components. Moreover, a processor or processors can also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations can be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application program interface (API)). The performance of certain of the operations may

[0097] A "processor" in this context refers to any circuit or virtual circuit (physical circuit emulated by logic executing on an actual processor) that manipulates data values according to control signals (e.g., "commands", "op codes", "machine code", etc.) and that produces results of the operations as output signals. A processor may, for example, be a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, a radio-frequency integrated circuit (RFIC), or any combination thereof. A processor can further be a multi-core processor having two or more independent processors (sometimes referred to as "cores") that can execute instructions contemporaneously.

[0098] A "timestamp" in this context refers to a sequence of characters or encoded information that identifies when a particular event occurred, e.g., giving the date and time of day, sometimes to the fraction of a second.

[0099] "LIFT" in this context is a measure of the performance of a target model in predicting or classifying cases with an enhanced response (relative to the population) when measured against a randomly selected target model.

[0100] "Phoneme alignment" in this context is the unit of speech that distinguishes one word from another. A phoneme can consist of a series of closures, bursts, and aspirated events; alternatively, a diphthong can transition from a back vowel to a front vowel. Thus, a speech signal can be described not only by the phonemes it contains, but also by the location of the phonemes. Phoneme alignment can thus be described as the "temporal alignment" of phonemes in a waveform in order to determine the proper order and location of each phoneme in a speech signal.

[0101] "Auditory-to-visual conversion" in this context refers to the conversion of an audible speech signal to a visible language, which can include mouth shapes representative of the audible speech signal.

[0102] "Temporal deep neural network" (TDNN) in this context refers to an artificial neural network architecture whose primary purpose is to process sequential data. For example, converting continuous audio into a stream of classification phoneme labels for speech recognition.

[0103] "Bi-directional long short-term memory" (BLSTM) in this context refers to a recurrent neural network (RNN) architecture that can memorize values for arbitrary intervals. The memorized values are not modified as learning progresses. RNNs allow both forward and backward connections between neurons. BLSTMs are well suited for classification, processing, and prediction of time series given unknown size and duration between events.

Claims

1. A method for geofence selection, comprising: associating media content with a geofence, the geofence enclosing a portion of a geographic area; obtaining location data from a client device, the location data comprising a point set identifying a plurality of locations of the client device over a period of time; determining a minimum metric enclosing the point set identifying the plurality of locations of the client device over a period of time; defining a boundary based on the minimum metric enclosing the point set; detecting an intersection between the boundary and the geofence; in response to detecting an intersection between the boundary and the geofence, obtaining the media content associated with the geofence; and loading the media content at a memory location of the client device. Obtaining the location data from the client device further comprises:

2. The method of claim 1, wherein, receiving a specified input at the client device; and obtaining the location data from the client device in response to the specified input. Obtaining the location data from the client device further comprises:

3. The method of claim 1, wherein, defining a sampling period, the sampling period comprising a sampling interval; and obtaining the location data from the client device based on the sampling interval. Defining the boundary based on the minimum metric comprises:

4. The method of claim 1, wherein, generating a bounding box based on the point set identifying the plurality of locations of the client device. Defining the boundary based on the minimum metric comprises:

5. The method of claim 1, wherein, generating a convex hull based on the point set identifying the plurality of locations. Defining the boundary based on the minimum metric comprises:

6. The method of claim 1, wherein, computing a mean value for the location data; identifying a mean location of the client device based on the mean value of the location data; and generating the boundary based on the mean location. Loading the media content at the memory location of the client device comprises:

7. The method of claim 1, wherein, presenting a representation of the media content in a media library at the client device. Loading the media content at the memory location of the client device comprises:

8. The method of claim 1, wherein, presenting the media content in a short-lived message at the client device.

9. A system, comprising: a memory; and at least one hardware processor coupled to the memory and comprising instructions causing the system to perform operations comprising: associating media content with a geofence, the geofence enclosing a portion of a geographic area; obtaining location data from a client device, the location data comprising a point set identifying a plurality of locations of the client device over a period of time; determining a minimum metric enclosing the point set identifying the plurality of locations of the client device over a period of time; defining a boundary based on the minimum metric enclosing the point set; detecting an intersection between the boundary and the geofence; in response to detecting an intersection between the boundary and the geofence, obtaining the media content associated with the geofence; and loading the media content at a memory location of the client device. Obtaining the location data from the client device further comprises: receiving a specified input at the client device; and 10. The system of claim 9, wherein, obtaining the location data from the client device in response to the specified input. ​ ​ 11. The system of claim 9, wherein, Obtaining the location data from the client device further comprises: defining a sampling period, the sampling period comprising a sampling interval; and obtaining the location data from the client device based on the sampling interval.

12. The system of claim 9, wherein, Defining the boundary based on the minimum metric comprises: generating a bounding box based on the point set identifying the plurality of locations of the client device.

13. The system of claim 9, wherein, Defining the boundary based on the minimum metric comprises: generating a convex hull based on the point set identifying the plurality of locations.

14. The system of claim 9, wherein, Defining the boundary based on the minimum metric comprises: computing a mean value for the location data; identifying a mean location of the client device based on the mean value of the location data; and generating the boundary based on the mean location.

15. The system of claim 9, wherein, Loading the media content at the memory location of the client device comprises: presenting a representation of the media content in a media library at the client device.

16. The system of claim 9, wherein, Loading the media content at the memory location of the client device comprises: presenting the media content in a short-lived message at the client device.

17. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising: associating media content with a geofence, the geofence enclosing a portion of a geographic region; obtaining location data from a client device, the location data comprising a point set identifying a plurality of locations of the client device over a period of time; determining a minimum metric enclosing the point set identifying the plurality of locations of the client device over a period of time; defining a boundary based on the minimum metric enclosing the point set; detecting an intersection between the boundary and the geofence; in response to detecting an intersection between the boundary and the geofence, obtaining the media content associated with the geofence; and loading the media content at a memory location of the client device. Obtaining the location data from the client device further comprises:

18. The non-transitory machine-readable storage medium of claim 17, wherein, receiving a specified input at the client device; and obtaining the location data from the client device in response to the specified input. Obtaining the location data from the client device further comprises:

19. The non-transitory machine-readable storage medium of claim 17, wherein, defining a sampling period, the sampling period comprising a sampling interval; and obtaining the location data from the client device based on the sampling interval. Defining the boundary based on the minimum metric comprises:

20. The non-transitory machine-readable storage medium of claim 17, wherein, generating a bounding box based on the point set identifying the plurality of locations of the client device. ​

Citation Information

Patent Citations

  • Method and Apparatus for Geographic Document Retrieval

    US20140129566A1

  • System to track engagement of media items

    US20170374508A1