Location services provide useful information on available attractions and amenities based on location. A common feature of many applications that use location services is the ability to search for content items in a set radius around the user. Traditionally, comparing distances between points at different latitudes and longitudes has required the use of the haversine formula, which can be computationally resource intensive.
Many modern navigation applications, social media services, and other programs rely on location services to locate the user on a map, tag posts with location data, and connect users to attractions. Oftentimes, users desire to see locations, tagged posts, friends, or other location-associated information that are within a certain radius of their current location. The traditional method of determining such distances is based on the longitude and latitude using the haversine formula, which determines the great-circle shortest distance between two points on the Earth's surface. The action of using the haversine to compute the distances between a user's coordinates and those of many other locations can be computationally resource intensive.
There are a number of ways in which location services can be used. One approach involves tagging various real-world locations with geospatial coordinates so they can be located easily and searched for intelligently while using a navigation application (“app”). Another approach for location services is the tagging of social media posts and media items with location data. Users of a photo-sharing app, for example, may want to tag a photograph with the location it was captured at. Another potential use for location services is the tagging of users themselves with location data, allowing for other users (e.g., friends or family) to locate them. Such approaches are powered by the same location services that suffer from the inefficiencies of haversine calculations.
Accordingly, there is a need to create a more efficient implementation of location services that prioritizes computational efficiency, especially when finding locations within a prescribed radius of a given location. As described herein, an implementation of location services that uses database lookup operations, instead of the more expensive haversine calculations, would help increase the efficiency and speed in which these comparisons may be performed.
In one aspect, a computer-implemented method for a localized recommendation search based on discovery radius optimization is provided. The method includes displaying, by a computing device, a map image of a geographical area. The method also includes receiving, by the computing device and from a user, a search query. The method further includes querying, by the computing device and based on the search query, a centralized database, wherein the centralized database comprises data indicative of a plurality of tiles covering the geographical area, wherein each tile of the plurality of tiles is associated with a respective list of points of interest associated with locations within the tile, and wherein the centralized database is configured to determine a particular tile associated with the search query. The method additionally includes receiving, from the centralized database, a particular list of points of interest associated with locations within the particular tile. The method also includes displaying, by the computing device, a visual representation of the particular list of points of interest.
In a second aspect, a computer-implemented method is provided. The method includes receiving, by a remote server and from a computing device, a search query associated with a geographical area, wherein the remote server comprises a database indicative of a plurality of tiles covering the geographical area, and wherein each tile of the plurality of tiles is associated with a respective list of points of interest located within the tile. The method also includes determining, by the remote server, a particular tile associated with the search query. The method further includes determining, by the remote server, a particular list of points of interest associated with locations within the particular tile. The method also includes providing, by the remote server and to the computing device, the particular list of points of interest located within the particular tile.
In a third aspect, a computer-implemented method for generating a centralized database associating location data and tiles that cover a geographical area is provided. The method includes determining, by a computing device and for the geographical area, a plurality of tiles covering the geographical area. The method also includes receiving, by the computing device and for each tile of the plurality of tiles, geolocation data associated with one or more points of interest associated with locations within the tile. The method further includes associating, in the centralized database and for each tile of the plurality of tiles, the geolocation data with the tile. The centralized database is configured to identify, responsive to a search query, a particular tile of the plurality of tiles, and provide a particular list of points of interest associated with locations within the identified particular tile.
In a fourth aspect, a computing device for location-based search is provided. The computing device includes one or more processors and data storage. The data storage has stored thereon computer-executable instructions that, when executed by one or more processors, cause the computing device to carry out functions. The functions include any of the aforementioned computer-implemented methods.
In a fifth aspect, a computer program for location-based search is provided. The computer program includes instructions that, when executed by a computer, cause the computer to carry out functions. The functions include any of the aforementioned computer-implemented methods.
In a sixth aspect, an article of manufacture for location-based search is provided. The article of manufacture includes one or more computer readable media having computer-readable instructions stored thereon that, when executed by one or more processors of a computing device, cause the computing device to carry out functions. The functions include any of the aforementioned computer-implemented methods.
In a seventh aspect, a system for location-based search is provided. The system includes means for carrying out any of the aforementioned computer-implemented methods.
The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the figures and the following detailed description and the accompanying drawings.
This application relates, in one aspect, to a localized recommendation system based on discovery radius optimization.
As described herein, one approach can involve a centralized database that contains a set of tiles (e.g., polygonal figures) that divide the world map into sections. These tiles can be any size, shape, or dimension. In some embodiments, each tile of the plurality of tiles may be polygonal in shape. In some embodiments, each tile of the plurality of tiles may be a square. For purposes of illustrations, the tiles used herein will be square. The delineations of these tiles may be pre-computed using a certain formula that accounts for the curvature of the Earth ensuring they are substantially equal in area. In some embodiments, the delineations of these tiles may be determined dynamically based on a location, a user, a type of search query, and so forth. The method further includes associating locations, posts, or other content items, defined by latitude and longitude, with such tiles.
In some embodiments, the search query may include one or more of location data, search radii, or search terms. For example, another approach can involve receiving a user-inputted search radius (for example, a distance or “travel time”), and associated search terms (for example, “restaurant”) into a computing device. The method then includes the localized recommendation system taking this search radius and using it to generate a bounding box around the user's current location. The method includes searching the database associating map tiles with the locations of content items and returning a list of content items whose associated tiles are within the bounding box defined by the localized recommendation system. The method then includes displaying, through the computing device, a list of locations within the search range that are relevant to the user based on the search terms inputted into the localized recommendation system. The method further includes displaying, through the computing device, a map annotated with the user's location and the locations of relevant content items tagged with location within the search range.
In some embodiments, the plurality of tiles may be determined based on a characteristic of the geographical area. For example, proximity and density of locations found in urban environments may result in an overabundance of search results. For example, many cities may include hundreds, or even thousands, of locations, tagged posts, and other geodata stored in a very small set of tiles in the database. In some embodiments, the characteristic of the geographical area may include a distribution of points of interest available within the geographical area. For example, some locations (e.g., cities) may include may more points of interest (e.g., museums, parks, statues, restaurants, theaters, etc.). In some embodiments, the characteristic of the geographical area may include a strength on an internet connection available within the geographical area. For example, areas with a strong network accessibility and/or bandwidth are likely to be easier to search. Accordingly, smaller tiles may be efficient.
As such, some tiles may be too large for the scale of many urban locations. When a user performs a search for locations within a certain radius, this fact, plus a bounding box that is too large, may lead to the localized recommendation system performing a large amount of calculations and displaying an untenably-large list of locations to the user. As such, various methods to reduce the scale of searches performed in certain urban environments are described.
In some embodiments, the characteristic of the geographical area may include a population density of the geographical area. Areas with large population densities are likely to return many more search results. Some embodiments may involve adjusting the size of the bounding box based on the user's location. A bounding box may be made smaller if the user is in a very densely populated area, where locations may be much closer together than in other areas. The method includes determining, based on pre-determined location data in the database, whether the user is in a designated urban area. The method alternatively includes determining, based on the density of location data in the database that the user is in an urban environment. The method further includes adjusting the size of the bounding box to be smaller or larger based on the location of the user, and the density of results returned by an initial search. If the number of results returned is too small or too large to be practical, the bounding box may be adjusted.
Another example approach may involve dividing the tiles into smaller-sized subunits. The method includes determining, based on pre-determined location data in the database, whether the user is in a designated urban area. The method alternatively includes determining, based on the density of location data in the database that the user is in an urban environment. The method further includes subdividing tiles in urban areas into many smaller squares. The location tags in the database would further be associated with the smaller squares of the tiles (“subtiles”). The method includes, when the user runs a search with a certain radius, only returning the subtiles within a certain radius of the user, leading to more accurate results that are closer to the user's current location.
Some embodiments involve filtering results presented to the user. The method includes associating location data in the database with feature vectors that link that data with certain categories. Examples of categories include sports, music, and food. When the bounding box is created based on the user-defined search radius, results returned to the user are filtered based on these feature vectors and the user-inputted search terms.
Another embodiment within this scope may include a search in which the user does define additional filters to narrow down their search.
A number of example applications are now described. These examples are for illustrative purposes only, and in no way limiting the scope of the present description. A number of applications for location services powered by the localized recommendation system based on discovery radius optimization are provided. These include a user searching for restaurants near their location, a user searching for social media posts made near a location that they provide, and a user being able to see an approximate area in which another user (e.g., family member, friend, etc.) is located.
In
It may be noted that these devices shown are for illustrative purposes only. Generally speaking, media content sharing platform 510 may be communicatively linked to a computing device over network 505. In fact, it may be linked to multiple computing devices (e.g., millions) in distributed computing environment 500. In addition to the computing devices illustrated in
Computing device 600 may include modules to provide various functionalities, such as for example, a graphical user interface 610, network communications 615, a processor 630, memory 635, a camera 640, a microphone 645, and battery 655, all of which may be linked together via a system bus, or other connection mechanism 605.
Graphical user interface 610 can be configured to send data to and/or receive data from external user input/output devices such as such as a touch screen, a computer mouse, a keyboard, a microphone, external monitors, and the like. Graphical user interface 610 can also be configured to generate audio and/or video outputs.
Network communications 615 can be configured to provide one or more wireless interface(s) 620 and/or one or more wireline interface(s) 625 that can be configured to communicate via a network (e.g., network 505 of
In some examples, network communications 615 can be configured to provide reliable, secured, and/or authenticated communications. For example, network communications 615 can be configured to provide encrypted data. The type of encryption may depend on a type of network interface, capabilities of a network itself, a type of data to be transmitted, and so forth.
Processor 630 can include a general purpose processor, and/or special purpose processors (e.g., digital signal processors, graphics processing units (GPUs), media processing processors, image processing processors, text processing processors, speech processing processors, etc.). Processor 630 can be configured to execute computer-readable instructions that are contained in memory 635 and/or other instructions as described herein.
Memory 635 can include one or more non-transitory computer-readable storage media that can be read and/or accessed by processor 630. The one or more computer-readable storage media can include volatile and/or non-volatile storage components. In some examples, memory 635 can be implemented using a single physical device, while in other examples, memory 635 can be implemented using multiple physical devices.
Memory 635 can include computer-readable instructions that, when executed by processor 630, enable computing device 600 to provide for some or all of the functionality of the computing devices and/or media content sharing platforms described herein.
In some examples, computing device 600 can include camera 640. Camera 640 can include still and/or video cameras.
In some examples, computing device 600 can include microphone 645. Microphone 645 can be configured to capture audio inputs (e.g., speech, music, and so forth).
In some examples, computing device 600 can include media content apps/platforms 650. Media content apps/platforms 650 may be configured to share media content, enable recording or playback of shared media content, create and/or share annotated images as described herein.
Battery 655 is configured to provide electrical power to computing device 600. Each battery can, when electrically coupled to the computing device 600, act as a source of stored electrical power for computing device 600. Battery 655 may be one or more of portable, removable, rechargeable, etc. The term battery is generally used herein to denote a power supply (wired or otherwise).
At block 720, method 700 involves receiving, by the computing device and from a user, a search query.
At block 730, method 700 involves querying, by the computing device and based on the search query, a centralized database, wherein the centralized database comprises data indicative of a plurality of tiles covering the geographical area, wherein each tile of the plurality of tiles is associated with a respective list of points of interest associated with locations within the tile, and wherein the centralized database is configured to determine a particular tile associated with the search query.
At block 740, method 700 involves receiving, from the centralized database, a particular list of points of interest associated with locations within the particular tile.
At block 750, method 700 involves displaying, by the computing device, a visual representation of the particular list of points of interest.
In some embodiments, the search query may include a user search radius.
In some embodiments, the search radius may not be provided by the user.
In some embodiments, the search radius may be a default search radius coded into the centralized database.
In some embodiments, the search query may include one or more search terms associated with a user search radius. Some embodiments involve receiving, by the computing device, the one or more search terms.
In some embodiments, the one or more search terms may be provided by the user.
In some embodiments, the receiving of the particular list of points of interest may include receiving a filtered list of points of interest.
In some embodiments, the centralized database may be remote to the computing device.
In some embodiments, the computing device may store a local copy of at least a portion of the centralized database.
In some embodiments, the local copy may be used by the computing device in an absence of an internet connection.
In some embodiments, each tile of the plurality of tiles may be polygonal in shape.
In some embodiments, each tile of the plurality of tiles may be a square.
In some embodiments, the plurality of tiles may be determined based on a characteristic of the geographical area.
In some embodiments, the characteristic of the geographical area may include a population density of the geographical area.
In some embodiments, the characteristic of the geographical area may include a distribution of points of interest available within the geographical area.
In some embodiments, the characteristic of the geographical area may include a strength on an internet connection available within the geographical area.
In some embodiments, the search query may include one or more of location data, search radii, or search terms.
At block 820, method 800 involves determining, by the remote server, a particular tile associated with the search query.
At block 830, method 800 involves determining, by the remote server, a particular list of points of interest associated with locations within the particular tile.
At block 840, method 800 involves providing, by the remote server and to the computing device, the particular list of points of interest located within the particular tile.
At block 920, method 900 involves receiving, by the computing device and for each tile of the plurality of tiles, geolocation data associated with one or more points of interest associated with locations within the tile.
At block 930, method 900 involves associating, in the centralized database and for each tile of the plurality of tiles, the geolocation data with the tile, wherein the centralized database is configured to identify, responsive to a search query, a particular tile of the plurality of tiles. and provide a particular list of points of interest associated with locations within the identified particular tile.
This present application claims priority to a U.S. provisional application Ser. No. 63/579,192 filed Aug. 28, 2023, the full disclosure of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63579192 | Aug 2023 | US |