The present disclosure relates generally to mapping and routing technologies. Embodiments of the present disclosure also relate to finding proximity between points of interest, such as hotels, property rentals, attractions, restaurants, etc. in a manner which realistically reflects reachability and travel time in one or more modes of transportation. Conventional mapping and routing finding programs are generally adapted to calculate detailed routes (e.g., turn-by-turn directions) between two selected locations, but such calculations may be too computationally-expensive, too slow, etc. to enable efficiently assessing proximity with respect to many points of interest, for example. Accordingly, improvements in mapping and routing technologies which reduce computational complexity (and thus computer runtime, required processing power, etc.) while enabling efficient generation of proximity-based results are desirable. Such improvements are described in detail below.
One implementation of the present disclosure is a method. The method includes storing, in computer memory, a tessellation comprising a plurality of tiles corresponding to a plurality of geographical regions. The plurality of tiles are stored with travel times in a plurality of transportation modalities across a plurality of edges of the plurality of tiles. The method also includes storing, in the computer memory, associations between a plurality of points of interest and corresponding tiles of the plurality of tiles based on locations of the plurality of points of interests relative to the plurality of geographic regions, determining, by one or more processors, a first set of the plurality of tiles reachable from a first tile of the plurality of tiles in up to a first total travel time based on the travel times across the plurality of edges, and identifying, by the one or more processors, a first set of the plurality of points of interest associated with the first set of the plurality of tiles.
This summary is illustrative only and is not intended to be in any way limiting.
The disclosure will become more fully understood from the following detailed description, taken in conjunction with the accompanying figures, wherein like reference numerals refer to like elements, in which:
Referring generally to the figures, aspects of the present application relate to presenting users of travel sites and applications realistic proximity information and presenting point of interest (proximity information in a meaningful, efficient manner. Points of interest may include touristic points of interest such as accommodations (e.g., hotels, vacation rentals, apartments, etc.), travel hubs (e.g., train stations, airports, bus stations), attractions (e.g., museums, theaters, stadiums, event venues, parks, monuments), activities (e.g., tours, shopping, trailheads, fitness centers, restaurants, bars, cafes), etc., and any other identifiable entity with a geographic location (e.g., associated latitude and longitude). Such travel sites handle large numbers of searches and users expect results to be presented immediately. Desired outcomes include informing users of how long the user would need to travel to reach various points of interest from a select accommodation or other location and/or identify a set of accommodations (e.g., hotels) or other points of interest within one or more selected travel times from one or more selected points of interest.
Conventional mapping programs calculate detailed routes between two selected points, in contrast to handling sets of proximity information. As one example, if a user wishes to identify the set of restaurants within a 10 minute walk of the user's hotel or current location using a conventional mapping program, the user would need to use the mapping program to calculate detailed directions to a large number of restaurants and manually determine, based on the directions, the set of restaurants that meet the user's time-of-travel limit. Such an approach is computationally expensive, requiring calculation of numerous sets of detailed directions, including detailed directions to points of interest that ultimately will not meet the desired proximity (i.e., in order to determine that such points of interest are too far away). Due to such computational complexity, such conventional route-finding approaches may not be suitable for use at scale in generating sets of proximity-related results (e.g., in the context of applications and webpages for travel booking).
Another approach to providing proximity information may be to use raw, straight-line distances between points of interest. However, such information is often misleading due to street layouts, waterways, and other geographic features. For example, points of interest of different islands or opposite sides of a river may be relatively close in straight-line distance but separated by long travel times or are practically unreachable if bridges, etc. are not present. As another example, use of basic straight-line distance information may fail to suggest connections between points of interest which are relatively far apart in distance but directly connected by public transit or high-speed roadway (and thus relatively quickly reachable).
Addressing such challenges, aspects of the present disclosure relate to approaches which provide point of interest proximity information driven by realistic estimates of travel times generated in a computationally-efficient manner. As will be apparent from the following description, embodiments herein determine geographic areas reachable in certain amounts of time by different transportation modalities while abstaining from calculating detailed turn-by-turn directions, thereby saving computation time and processing demand. Points of interests in areas reachable in desired amounts of time using various transportation modalities can be identified in sets in an efficient manner.
Such approaches technologically enable deployment of programs, applications, websites, etc. which can provide such proximity information to users substantially immediately (e.g., order of milliseconds) in response to user inputs, search queries, etc. In this regards, the teachings herein provide reduce computation complexity which allows the calculations to be performed more quickly and, in some embodiments, locally on edge devices (e.g., smartphones) as opposed to only in more powerful server farms (e.g., in the cloud). The features herein thereby provide reduced power consumption for executing such processing (reducing in less battery drain when executed on smartphones and less overall energy footprint, emissions footprint, etc. associated with providing the features herein) while also providing lower latency results (e.g., less wait time for users of the systems and methods described herein). Such advantages enable scalability of the systems and methods described herein, for example to provide results to any arbitrary number of simultaneous users submitting parallel requests via a travel booking site or application as described herein. As explained in detail below, such efficiency savings can be adapted according to desires for higher accuracy information as desired in different scenarios. These and other technical advantages will be apparent from the following detailed description.
Referring now to
The provider computing system 102 is shown as including a provider network interface 105, a provider processing circuit 107, and a provider database 109. The provider network interface 105 facilitates connection of the provider computing system 102 to the network 108. The network interface 105 can support communication via the network 108 between the user device 104 and the provider computing system 102 and/or between the street map service 106 and the provider computing system 102. The network interface 105 may include communications ports (e.g., Ethernet ports), routing capabilities, a cellular modem, a wireless transceiver or beacon, etc. in various embodiments. In some embodiments, the network interface 105 includes cryptographic capabilities to establish a secure communications session.
The provider processing circuit 107 is structured to control, at least partly, the provider computing system 102 and to execute or otherwise enable the various operations attributed herein to the processing circuit 107. For example, the provider processing circuit 107 can execute the various processes shown in the figures and described in detail below, in various embodiments. The processing circuit includes memory (one or more non-transitory computer readable media) 110 and one or more processors 112. The processor(s) 112 may be implemented as one or more general-purpose processors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), digital signal processors (DSPs), other suitable electronic processing components, or a combination thereof. The memory 110 may be implemented as RAM, ROM, NVRAM, Flash Memory, hard disk storage, solid state storage, etc. and may store data and/or computer-readable instructions (programming, logic, code) for providing the features described herein. The memory 110 stores computer-readable instructions that, when executed by the processor(s) 112, causes the processor(s) 112 to perform some or all of the operations attributed herein to the provider processing circuit 107 and/or provider computing system 102, in various embodiments.
The provider database 109 is structured to retrievably store (e.g., in non-transitory computer memory) data usable by the provider processing circuit 107 for providing operations as described herein. For example, the provider processing circuit 107 may be structured to read data from the provider database 109 and write data to the provider database 109. The provider database 109 can include various database components in various embodiments, for example memory in hard drive storage, disk storage, solid state storage, etc.
As shown in
The one or more tessellations 116 stored by the provider database 109 is/are one or more cartographic tessellations, for example according to various examples described below and shown in the following figures. A tessellation stored in the provider database 109 includes tiles (cells, etc.) associated with geographic regions. The tiles tessellate (fit together without gaps or overlapping), to cover a larger geographic region, in some examples to provide global coverage. In some embodiments, tiles can be omitted in regions not of interest to users of the system 100, for example road-less regions or difficult to reach areas (e.g., polar regions, countries with restrictive access, etc.). The tessellations herein can thus be characterized as a type of map or cartographic representation.
Each tile in a tessellation has multiple edges, as tiles can be triangular, rectangular, pentagonal, hexagonal, and/or other polygonal shape(s), in various embodiments. Tiles can be various sizes in different tessellations and/or within a tessellation. In the embodiments herein, each edge is associated with travel time information representing an estimated amount of time it would take to leave the tile via the edge, i.e., to get from a first tile to a second, adjacent title by crossing the edge. In some embodiments, each edge is associated with travel times for multiple transportation modalities (e.g., walking, biking, driving, electric scooter, boat, public transit, etc.).
In some embodiments, the provider database 109 stores associations between the points of interest data 114 and corresponding tiles of the one or more tessellations 116 based on the geographic locations of the points of interest and the geographic regions covered by tiles. That is, the provider database 109 can store (e.g., with the tessellation(s) 116) indication that a first set of points of interest are located in a geographic region corresponding to a first tile, that a second set of points of interest are located in a geographic region corresponding to a second tile, that a third set of points of interest are located in a geographic region corresponding to a third tile, etc. Some such embodiments are described with respect to process 200 of
The user device 104 as shown in
The user device processing circuit 126 is structured to control, at least partly, the user device 104 and to execute or otherwise enable the various operations attributed herein to the user device 104. For example, the user device processing circuit 126 can execute the various processes shown in the figures and described in detail below, in various embodiments. The user device processing circuit 126 includes memory (one or more non-transitory computer readable media) 130 and one or more processors 132. The processor(s) 132 may be implemented as one or more general-purpose processors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), digital signal processors (DSPs), other suitable electronic processing components, or a combination thereof. The memory 130 may be implemented as RAM, ROM, NVRAM, Flash Memory, hard disk storage, solid state storage, etc. and may store data and/or computer-readable instructions (programming, logic, code) for providing the features described herein. The memory 130 stores computer-readable instructions that, when executed by the processor(s) 132, causes the processor(s) 112 to perform some or all of the operations attributed herein to the user device processing circuit 126 and/or user device 104, in various embodiments.
The user device 104 is further shown as including an input/output circuit 134. The input/output circuit 134 can include various components for providing outputs to a user of the user device 104 and receiving inputs from a user of the user device 104. For example, the input/output circuit 134 can include a display screen, a touchscreen, a mouse, a button, a keyboard, a microphone, a speaker, an accelerometer, actuators (e.g., vibration motors), including any combination thereof, in various embodiments. The input/output circuit 134 may also include circuitry/programming/etc. for running such components. The input/output circuit 134 thereby enables communications to and from a user, for example communications relating to travel times and points of interest as described in further detail elsewhere herein.
The street map service 106 is configured to provide transportation map data (e.g., street-level map data) for the system 100, for example to the provider computing system 102 via network 108. As used herein, street-level map data and similar terms are intended to refer to detailed, conventional maps and differentiate such maps from the tessellations described herein. The street map service 106 can be a free or commercial service, for example provided as a software-as-a-service option via the Internet (e.g., via network 108). Map data from the street map service 106 can be periodically updated and can include information for multiple transportation modalities (e.g., walking paths, biking paths, roads for cars, train routes, bus routes, ferry routes, etc.). In some embodiments, the street map service 106 provides travel time estimates for various roads, paths, routes, etc., for example based on speed limits, transportation timetables, historical traffic data, etc. The street map service 106 can provide calculation of turn-by-turn directions between selected points and for detailed calculations of predicted or average travel times according to such turn-by-turn directions, in some embodiments. As will be described in further detail below with reference to
Referring now to
At step 202, one or more tile sizes are selected for a tessellation based on one or more criteria. In some embodiments, the tiles of a tessellation will have a consistent size. In other embodiments, the tiles of a tessellation can vary within a tessellation. Smaller tile sizes may improve accuracy of travel time calculations while increasing memory requirements and computational complexity, as will be demonstrated further below, such that tuning tile size in step 202 can provide a intelligent balance between accuracy and efficiency. In some embodiments, tile size is selected in step 202 based on transportation modality as a criterion, for example such that a smaller tile size is selected for a tessellation (or portion thereof) used for (or primarily used for) walking information as compared to relative larger tile size selected for a tessellation (or portion thereof) used for (or primarily used for) driving information. As another example, tile size can be determined based on a criterion that checks whether a region is classified as urban or rural (or other such distinction), for example from underlying map data. As another example, a criterion used in step 202 can be road or path density, for example such that smaller tile sizes are selected for areas with more roads or paths as compared to areas with less roads or paths. As yet another example, a criterion used in step 202 can be point of interest density, for example such that smaller tiles can be selected in step 202 for geographic regions with larger numbers of points of interest as compared to areas with smaller numbers of (or zero) points of interest. Tile size can thus be automatically tuned in step 202 to provide higher accuracy in dense areas (e.g., highly visited areas, geographically complex areas) and higher efficiency in less-dense areas, in some embodiments.
At step 204, one or more tessellations are generated from street map and multi-modality routing data (e.g., from street map service 106) using the selected tile size(s) from step 202. Step 204 can include transforming a street-level graph encoded with travel time information (e.g., travel time along streets with a node at each intersection) into a tessellation.
As one example facilitate understanding of step 204,
Step 204 includes using the street-level map and routing (e.g., map 302 and routes such as 308) to estimate travel times from one tile into adjacent tiles (e.g., across all edges of the tile). Step 204 may include using the street-level map 302 and routing to find a route from an approximate midpoint of a first tile to an approximate midpoint of an adjacent tile and using the estimated time for such a route (as provided by the street-level map data) to define the travel time for the edge of the first tile shared by the adjacent tile. Where multiple roads cross an edge of a cell, the travel time may be based on the fastest route across the edge (i.e., least time), an average of the different times associated with traveling the different roads, or some other combination or function of such multiple times for crossing the edge. The travel time associated with an edge of a tile may also be defined by computing a list of cells covering a road segment (e.g., between two intersections), determining a time needed to travel the road segment (e.g., from one intersection to the other intersection) and then attaching to each edge of such cells a fraction of the time needed to travel the entire road segment. Such travel is referred to herein as crossing the shared edge, even if the street-level route does not intersect the shared edge. Travel times associated with the arrows 310 (for the edges crossed by the arrows 310) can thus be estimated using the street-level mapping data, including in multiple transportation modalities in some embodiments. Such street-level routing finding calculations can be repeated until each of the tessellation has an associated travel time determined in step 204.
Further illustrating an example result of step 204,
Step 204 can thereby reduce the complexity of the street-level map and routing data by generating a tessellation while capturing meaningful travel time information derived from detailed street-level information. The total file size of a resulting tessellation is expected to be multiple orders of magnitude smaller than the total file size of a detailed street-level map. Such savings on computer resources is apparent from
At step 206, points of interest are associated with corresponding tiles of the tessellation(s) based on geographic information for the points of interest. As illustrated in
Referring now to
At step 502, a starting point is selected. In some embodiments, the starting point is a user's current location, for example determined from a global positioning system chip of the user device, using cellular network data associated with the user device, or input by a user. In some embodiments, the starting point may be based on a search query input by a user to a travelling booking site (e.g., an aggregator of hotel and/or other accommodation listings), e.g., hosted by the provider computing system 102 and/or running on user client application 128. For example, a user may be searching for points of interest (e.g., hotels) near an arbitrary location (or other point of interest, e.g., hotels near a particular event venue), which can be selected as the starting point in step 502 based on user input. The starting point is associated with a tile of the tessellation being used in process 500 such that a starting tile is selected in step 502.
At step 504, a maximum travel time and a travel modality are selected. In some embodiments, such values are user-selected, for example via graphical user interface (e.g., via drop down menus, free-text fields, selectable radio buttons, etc.). In some embodiments, the maximum travel time and travel modality are set to predefined or default values. Selectable travel modalities can include walking, biking, driving, public transit (train, bus, ferry, etc.), boat, etc. in various embodiments.
At step 506, an isochrone is calculated from the tessellation (e.g., a tessellation from process 200) based on the selected maximum travel time and travel modality. The isochrone is the set of tiles of the tessellation reachable from the selected starting tile via the selected travel modality in up to (e.g., equal to or less than) the maximum travel time. An isochrone is calculated based on the travel times stored with edges of tiles of the tessellation (e.g., times as illustrated in
For example,
Based on such logic, an isochrone can be found in step 506 using a flood-fill approach, whereby each subsequent tile is selected for inclusion in the isochrone unless moving into that tile would reach a total travel time exceeding the maximum travel time from step 504.
An example isochrone resulting from an example implementation of step 506 is shown in
The example of
Further illustrating advantages of process 500 through at least step 506,
Still referring to
At step 510, the identified points of interest are output to a user, for example via the input/output circuit 134 of the user device 104. The identified points of interest can be presented in a list or in some other format in a graphical user interface, in some embodiments. In some embodiments, the points of interest are communicated audibly (e.g., via speaker) to the user. In some embodiments, presenting the identified points of interest to a user in step 508 can include presenting one or more selectable options to a user to book a reservation, ticket, rental, stay, activity, etc. to enable the user to book experiences, accommodations, etc. associated with the points of interests. Various additional point of information can be accessed from the points of interest data 114 of the provider data and presented in step 508 (e.g., hours, ratings, reviews, prices, etc.).
Due to the computational efficiencies highlighted above, such points of interest results can be output to a user in an amount of time that the user perceives as substantially instantaneous (e.g., comparable to typical webpage load times, on the order of microseconds). In contrast, using other approaches such as those which involve street-level routing finding would generate results on the order of seconds or minutes, based on experimental results of
Referring now to
At step 1002, a first location and a first travel time are selected. The first location can be selected based on a user input (e.g., a location selected via a graphical user interface) or other information (e.g., as described with reference to step 502 of process 500). The first travel time can be a maximum desired travel time, e.g., input by a user or otherwise selected with reference to step 504 of process 500. A first desired travel modality may also be selected in step 1002 (e.g., based on user input to a graphical user interface)
At step 1004, a tessellation (e.g., from process 200) is used to calculate a first isochrone indicating the tiles of the tessellation reachable from the first location in up to the first travel time (e.g., in the first desired travel modality). Step 1004 can be executed according to the approach described above with reference to step 506. A first set of tiles is thereby identified. In some embodiments, step 1004 is repeated for multiple different travel modalities to determine a first set of isochrones in step 1004.
At step 1006, a second location and a second travel time are selected. The second location can be selected based on a user input (e.g., a location selected via a graphical user interface) or other information (e.g., as described with reference to step 502 of process 500). The second travel time can be a maximum desired travel time, e.g., input by a user or otherwise selected with reference to step 504 of process 500. The second location can be different than the first location and the second travel time can be different than the first travel time. In some embodiments, different travel modalities are also selected from the first location and the second location. A second desired travel modality may also be selected in step 1002 (e.g., based on user input to a graphical user interface).
At step 1008, a tessellation (e.g., the tessellation used in step 1004) is used to calculate a second isochrone indicating the tiles of the tessellation reachable from the second location in up to the second travel time. Step 1008 can be executed according to the approach described above with reference to step 506. A second set of tiles is thereby identified. In some embodiments, step 1008 is repeated for multiple different travel modalities to determine a second set of isochrones in step 1008.
At step 1010, overlapping tiles of the first isochrone (from step 1004) and the second isochrone (from step 1008) are identified. Tiles of the tessellation which are in both the first isochrone and the second isochrone are the overlapping tiles. If no overlap exists, an error message can be communicated to a user (e.g., via user device 104). If overlapping tiles exist, process 1000 can continue to step 1012. In other embodiments, any number of additional locations and associated isochrones can be selected such that the overlapping tiles identified in step 1010 represent the overlap of any desired number of isochrones. In some embodiments, step 1010 includes handling multiple transportation modalities by determining overlapping tiles of a first set of isochrones (produced in embodiments where step 1004 is repeated for multiple travel modalities) and a second set of isochrones (produced in embodiments where step 1008 is repeated for multiple travel modalities).
At step 1012, points of interest associated with the overlapping tiles are identified. Step 1012 can be executed according to the features of step 508 described above, for example, based on the set of overlapping tiles. The identified points of interest will thus be estimated to be both (1) reachable from the first location in up to the first travel time and (2) reachable from the second location in up to the second travel time. Process 1000 thereby further leverages geometric overlap of tiles in isochrones in a manner which compounds the efficiency advantages described with respect to
At step 1014, the points of interest are output to the user (e.g., via user device 104). Step 1014 can be adapted from step 510 of process 500, for example. In some embodiments, step 1014 includes generating a graphical user interface, for example as illustrated in
Referring now to
The graphical user interface 1100 is shown as including a first point of interest input field 1102 and a first desired travel time field 1104 which enable a user to input a first location and a first travel time, respectively (e.g., via drop down menus, searchable lists, suggested values, free-text entry, etc.). Such inputs can be used in step 1002. The graphical user interface 1100 is shown as also including a second point of interest input field 1106 and a second desired travel time field 1108 which enable a user to input a second location and a first travel time, respectively (e.g., via drop down menus, searchable lists, suggested values, free-text entry, etc.). Such inputs can be used in step 1006.
The graphical user interface 1100 further includes a results list 1110 showing hotels matching the search criteria, for example hotels identified in step 1012 of process 1000. In the example shown, the hotels are listed in the results list 1110 as hyperlinks to further information about the hotels and with pricing information for the hotels. The results list 1110 further shows estimated travel times to the different hotels (e.g., generated according to process 1200 of
In the example shown, the graphical user interface 1100 (and the processes described herein used to provide the displayed information) enables a user to efficiently search for properties which met detailed travel time criteria without requiring the user to independently search for turn-by-turn directions and while avoiding reachability issues. The computational efficiencies enabled by the processes herein make such a graphical user interface 1100 feasible to be provided with user-acceptable responsiveness, overcoming prior technical roadblocks.
Referring now to
At step 1202, a starting location is selected. The starting location a selected point of interest or an arbitrary location, for example input by a user or determined automatically from a current position of the user device 104. In some embodiments, the starting location is a hotel or vacation rental property (or other point of interest) selected by a user in a travel booking session provided via a webpage or mobile application (e.g., via user client application 128). At step 1204, a destination is selected. The destination may be user-input, a selected point of interest or an arbitrary location, for example input by a user. In some embodiments, the destination is a hotel or vacation rental property (or other point of interest) selected by a user in a travel booking session provided via a webpage or mobile application (e.g., via user client application 128).
At step 1206, one or more tessellations are used to estimate travel time from the starting location to the selected destination in one or more modalities. In some embodiments, a different tessellation is used for each different transportation modality. In some embodiments, different tessellations are used and results averaged or otherwise combined, for example different tessellations having different tile sizes or shapes, trained on different traffic data (e.g., different times of day), or otherwise differing from one another. As one example, the one or more tessellations may include a first tessellation having a first tile size and a second tessellation having a second tile size, and using the one or more tessellations can include selecting between the first tessellation and the second tessellation for use based on a desired accuracy for a result of estimating total travel times. In such an example, the desired accuracy can be based on a mode of travel (e.g., higher accuracy desired for walking as compared to driving), a user selection (e.g., a toggle on a graphical user interface to allow a user to elect either higher speed results or higher accuracy results), or other consideration (e.g., whether the area between the first tile and the second tile corresponds to an urban area or a rural area).
Estimating travel time from the starting location to the selected destination using a tessellation can include finding the chain of tiles from the starting location to the selected destination which minimizes a total travel time (i.e., minimizes a sum of the travel times associated with edges crossed to reach the destination through multiple tiles). Various path planning algorithms can be used for finding such an optimal route through the tessellation. Because the tessellation is less complex than street-level detail such route finding processes can execute substantially faster than conventional mapping programs can find turn-by-turn directions. The approach of process 1200 can be helpful for quickly providing approximate travel times and in scenarios where detailed directions are not desired.
Step 1206 can thereby result in an estimation of travel time from a starting location to a destination in one or more travel modalities (e.g., a time for biking, a time for walking, a time for driving, etc.). In some embodiments, a visualization of the determined route is also generated in process 1200 and output to a user (e.g., via input/output circuit 134). An example graphical user interface 1300 generated in such an embodiments is shown in
In some embodiments, travel time(s) in one or more transportation modalities calculated in process 1200 are provided to user in a graphical user interface of a travel booking session. In such embodiments, one or both of the starting point and the destination may be a hotel, vacation rental, or other point of interest with a bookable (e.g., able to be reserved, tickets available, rooms available, etc.) experience. Process 1200 can include providing, via such a travel booking session, a selectable option for a user to complete a booking of a hotel, vacation rental, etc. associated with the starting point and/or destination. The efficient calculations of process 1200 can thereby enable low latency searching and browsing of accommodations and other travel locations in a travel booking session, enable user-friendly and computationally efficient travel bookings.
Referring now to
At step 1402, a global tessellation is stored at the provider computing system 102 (e.g., in provider database 109). The global tessellation may cover the entire globe (i.e., the whole, spherical world) or may be global in that all areas of potential interest are covered by the tessellation. In some embodiments, such a tessellation may take up an amount of computer storage suitable for the provider database 109 but not desirable for smaller devices such as the user device 104 in an embodiment. For example, a user may not want to consume storage space on the user's personal device to store data for regions of the world the user is not intending to visit.
At step 1404, a user's region of interest is determined. In some embodiments, the region of interest is determined by based on the user's current location (e.g., from user device data). In some embodiments, the region of interest is based on a user search query or other user input selecting a region of interest. In some embodiments, the region of interest is based on a travel booking, for example a flight booking, hotel booking, etc., or search history for such bookings.
At step 1406, a portion of the global tessellation corresponding to the region of interest is pushed to the user device 104, for example to the user client application 128. The portion (e.g., sub-tessellation) for the region of interest can thus be stored locally on the user device 104 and accessed on the user device 104, including in times when the user device 104 loses connection to the network 108.
At step 1408, proximity services are executed locally on the user device 104 using the portion of the global tessellation pushed to the user device 104 in step 1406. The proximity services executed in step 1408 can be any of the various features, processes, etc. described with reference to
The hardware and data processing components used to implement the various processes, operations, illustrative logics, logical blocks, modules and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose single- or multi-chip processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, or, any conventional processor, controller, microcontroller, or state machine. A processor also may be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. In some embodiments, particular processes and methods may be performed by circuitry that is specific to a given function. The memory (e.g., memory, memory unit, storage device) may include one or more devices (e.g., RAM, ROM, Flash memory, hard disk storage) for storing data and/or computer code for completing or facilitating the various processes, layers and modules described in the present disclosure. The memory may be or include volatile memory or non-volatile memory, and may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present disclosure. According to an exemplary embodiment, the memory is communicably connected to the processor via a processing circuit and includes computer code for executing (e.g., by the processing circuit or the processor) the one or more processes described herein.
The present disclosure contemplates methods, systems and program products on any machine-readable media for accomplishing various operations. The embodiments of the present disclosure may be implemented using existing computer processors, or by a special purpose computer processor for an appropriate system, incorporated for this or another purpose, or by a hardwired system. Embodiments within the scope of the present disclosure include program products comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media can be any available media that can be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of machine-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer or other machine with a processor. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machines to perform a certain function or group of functions.
Although the figures and description may illustrate a specific order of method steps, the order of such steps may differ from what is depicted and described, unless specified differently above. Also, two or more steps may be performed concurrently or with partial concurrence, unless specified differently above. Such variation may depend, for example, on the software and hardware systems chosen and on designer choice. All such variations are within the scope of the disclosure. Likewise, software implementations of the described methods could be accomplished with standard programming techniques with rule-based logic and other logic to accomplish the various connection steps, processing steps, comparison steps, and decision steps.