Multi-point route planning and distribution of search results along route

By implementing a map engine in the electronic map system, automatically detecting multi-point routes and optimizing search result distribution, the problems of multi-point route planning and search result distribution are solved, and the efficiency and user experience of navigation and search results are improved.

CN119173738APending Publication Date: 2024-12-20APPLE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380039530.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-01-24
Filing Date
2023-05-05
Publication Date
2024-12-20

AI Technical Summary

Technical Problem

Existing electronic map systems are difficult to effectively handle multi-point route planning and distribution of search results along the road, especially in terms of navigation between multiple intermediate road points and destinations and optimization of search results.

Method used

By implementing a map engine on the user equipment, it automatically detects the arrival of the intermediate waypoint or starts from the intermediate waypoint, and determines and starts the score based on the periodicity of the user's location, updates the multi-point route, provides the spatio-temporal distribution of search results, and optimizes the route planning cost and user interface display.

Benefits of technology

It realizes accurate navigation of multi-point routes and efficient distribution of search results, improves user experience, optimizes route planning costs and user interface display, and meets the needs of multi-point route planning and search results.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119173738A_ABST
    Figure CN119173738A_ABST
Patent Text Reader

Abstract

Multi-point routing by using a navigation device may be improved by using multi-point arrival and departure detection to determine whether to advance navigation to a next point on a route or to maintain navigation to a current point on the route. When an intermediate point is added to the route, a location generated by the search query may include a spatio-temporal distribution of search results. The search results may also be presented with route planning cost information.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. Provisional Patent Application No. 63 / 364,490, filed on May 10, 2022, entitled “MULTIPOINT ROUTING & DISTRIBUTION OF SEARCH RESULTS ALONG ROUTE,” and U.S. Patent Application No. 18 / 100,887, filed on January 24, 2023, entitled “MULTIPOINT ROUTING & DISTRIBUTION OF SEARCH RESULTS ALONG ROUTE,” each of which is incorporated herein by reference in its entirety and for all purposes. Background Art

[0003] With the proliferation of mobile devices, electronic maps are used by various services and applications. Some uses of electronic maps may include travel guidance (such as for driving, walking, etc.) or for presenting information related to a specific geographic location. Electronic maps can be used to generate routes and guide users along the routes. Summary of the invention

[0004] A system of one or more computers may be configured to perform actions by having software, firmware, hardware, or a combination thereof installed on the system that causes the system to perform a specific operation or action in operation. One or more computer programs may be configured to perform actions by including instructions that, when executed by a data processing device, cause the device to perform a specific operation or action. One general aspect includes a computer-implemented method. The computer-implemented method includes maintaining navigation to a first intermediate waypoint by a user device, the first intermediate waypoint corresponding to a multi-waypoint route on a map, the multi-waypoint route having one or more intermediate waypoints and a destination. The computer-implemented method also includes determining by the user device whether the user device is within a zone corresponding to the first intermediate waypoint of the multi-waypoint route. The computer-implemented method also includes, in response to determining that the user device is within a zone corresponding to the first intermediate waypoint, identifying a set of positions of the user device, each position in the set of positions being identified by the user device at least periodically. The computer-implemented method also includes determining by the user device a set of weights for the positions, each weight in the set of weights corresponding to a position in the set of positions, and each weight being based at least in part on the time since the corresponding position was identified. The computer-implemented method also includes determining, by the user device, a departure score based at least in part on the set of weights and the set of positions. The computer-implemented method also includes updating a multi-waypoint route on a map based at least in part on the departure score. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the method.

[0005] Another general aspect includes a computer-implemented method. The computer-implemented method includes receiving a search query by a computing device during presentation of a route associated with a map, the search query being configured to determine one or more associated locations on the map, and the route being configured with one or more groups of bounding boxes associated with points on the route. The computer-implemented method also includes determining, by the computing device, locations on the map associated with the search query, the locations being within a first group of bounding boxes in the one or more groups of bounding boxes along the route. The computer-implemented method also includes receiving, by the computing device, route planning cost information associated with each of the locations from a route planning server. The computer-implemented method also includes generating, by the computing device, a distribution of locations based at least in part on the route planning cost information, the distribution being configured to include a subgroup of locations distributed over a threshold portion of the route. The computer-implemented method also includes displaying, by the computing device, at least a portion of the subgroup of locations on a user interface of the computing device according to the distribution. Other embodiments of this aspect include corresponding computer systems, apparatuses, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the method. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] Figure 1 A simplified flow chart for performing the techniques described herein is illustrated according to an embodiment of the present disclosure.

[0007] Figure 2 A block diagram for illustrating the techniques described herein is illustrated in accordance with an embodiment of the present disclosure.

[0008] Figure 3 A block diagram for illustrating the techniques described herein is illustrated in accordance with an embodiment of the present disclosure.

[0009] Figure 4 A block diagram for illustrating the techniques described herein is illustrated in accordance with an embodiment of the present disclosure.

[0010] Figure 5 A simplified flow chart for performing the techniques described herein is illustrated according to an embodiment of the present disclosure.

[0011] Fig. 6A , Figure 6B and Figure 6C Diagrams for describing the techniques described herein are illustrated according to embodiments of the present disclosure.

[0012] Figure 7 A simplified flow chart for performing the techniques described herein is illustrated according to an embodiment of the present disclosure.

[0013] Figure 8 An example architecture or environment configured to implement the techniques described herein is illustrated according to an embodiment of the present disclosure. DETAILED DESCRIPTION

[0014] Certain embodiments of the present disclosure relate to devices, computer-readable media and methods for implementing various technologies for various features of multi-point route planning. In the following description, various embodiments will be described. For the purpose of explanation, many specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to those skilled in the art that these embodiments can be implemented without these specific details. In addition, well-known features may be omitted or simplified to prevent confusion with the embodiments described herein.

[0015] Maps are used in many applications. Map engines allow other client applications to use the mapping system. For example, electronic maps are used for many different functions on personal devices. One particular function or application of electronic maps is for route planning to a target location. However, a user may want to create a route between multiple points instead of having a single starting point and destination. A route with multiple waypoints along the way may be called a multi-point route. A multi-point route may have a starting point, one or more intermediate waypoints, and a destination. The starting point may also be called a starting point or a starting location. The destination may also be called an end point, an end point, or an end location.

[0016] There are several ways to develop a multi-point route. A multi-point route can be determined at the beginning of the route. For example, a user can enter a starting location (e.g., their current location), and one or more intermediate locations, and then enter an ending location before embarking on the route. A multi-point route can also be created from a single-point route in which there is only an origin and a destination. For example, a user may be en route from an origin to a destination, but needs to add and / or travel to one or more intermediate locations before reaching the destination. Similarly, waypoints can be added after the destination so that the new waypoint can be considered the destination and the previous destination can be considered the intermediate location. In this way, a multi-point route is generated from a single-point route.

[0017] Examples of the present disclosure relate to methods, systems, devices, and computer-readable media for, among other things, multi-point route planning arrival and departure detection. If it is detected that the user continues on their route to another intermediate point or to the destination, multi-point route planning arrival and departure detection may be useful by continuing route navigation, such as by giving auditory instructions. Similarly, if it is detected that the user stops at an intermediate waypoint or attempts to find a stopping location or parking location near an intermediate waypoint, multi-point route planning arrival and departure detection may be useful by maintaining route planning navigation to the current intermediate waypoint. The map engine's detection of multi-point route planning arrival and departure will enable the map engine and / or a client application using the map engine to provide correct navigation information to the user (based on the user's actions or inferred intent).

[0018] Turning now to a first specific example, there is provided a portable user device comprising a map engine and a client application configured for multi-point route planning. The map engine may support mapping services on the portable user device, which may include providing a map view within the client application and implementing techniques related to multi-point route planning. The client application may be a third-party application that uses the map engine to perform map-related functions. Alternatively, the client application may be a first-party application that uses the map engine to perform map-related functions. For example, the client application may be a map application that uses the map engine to determine and present a route that may include a destination and one or more intermediate waypoints. The map engine may also be configured to automatically detect arrival at or departure from an intermediate waypoint.

[0019] In this first example, the map engine may be configured to automatically detect arrival at an intermediate waypoint. The map engine may have a pre-arrival zone associated with the intermediate waypoint. The pre-arrival zone may be determined in a variety of ways based on information surrounding the intermediate waypoint. The pre-arrival zone may be associated with one or more entrances to the intermediate waypoint, or with a parking lot associated with the intermediate waypoint.

[0020] In this first example, upon reaching a pre-arrival zone associated with an intermediate waypoint, a user of a portable user device including a mapping engine has several options. For example, the user may a) proceed to the next intermediate waypoint or destination, b) stop at or near the intermediate waypoint, or c) find a place to store and / or park their vehicle, among other options. Alternatively, the user may recover from being lost (e.g., if they miss the routing instructions and pass the waypoint). The mapping engine is configured to automatically detect which option the user is selecting based on periodic determination of the location of the portable user device and / or the time taken to attempt to reach the waypoint. The mapping engine may update the client application to reflect the user's decision and / or intent regarding the intermediate waypoint.

[0021] In this first example, a departure score may be calculated based on periodic determination of the location of the portable user device. Various other factors may also affect the departure score. For example, the departure score may weight the most recent location higher than the previous location. The departure score may be used to determine the user's intent. For example, if the map engine determines that the location of the portable device is along a route to the next intermediate waypoint or to the final destination, the map engine may determine that the user's intent is to continue along the multi-point route. If the map engine determines that the location of the portable device is approaching, staying nearby, or circling on the route, the map engine may determine that the user's intent is to continue navigating to the current intermediate waypoint (e.g., the user is looking for parking or is lost).

[0022] In another example, the map engine may provide a spatiotemporal distribution of search results along a map. As described above, when a user wants to find a new intermediate waypoint, they may have been along a route or a multi-point route. For example, a user may be on a road trip and they decide that they want to go find coffee. The user may enter a search query into their user device, and the user device (whether a client application or a map engine) may transmit the search query to a map server. The map server may determine the user's intent from the search query and determine whether the user is looking for a nearby location, a location along a route, or a specific location. The map server will then determine a list of locations within one or more bounding boxes of the route and the user's current location. The map server may then provide the list of locations to a route planning server to determine the route planning cost and route planning information. The route planning server provides the route planning cost and route planning information for each location on the list to the map server. The map server may then transmit a list of locations with associated route planning costs and route planning information to the user device.

[0023] In this second example, if the search query indicates an intent to find a location along a route, the map server may divide the route into several segments, some of which are closer to the user device and other segments are farther away from the user device. Because the computational and network costs of determining routing information for each possible location are significant, the map server may provide a list of locations to the routing server that may be a subset of all possible locations that match the search query (e.g., instead of providing the entire list). This subset of locations may include results in each segment of the route. The routing server may determine the routing cost and routing information for this subset of locations and transmit the results back to the map server. In this way, the map server has a list of results with locations and routing cost information to transmit to the user device.

[0024] In this second example, when a list of locations and associated routing costs and routing information are presented at a user device, the list of locations may be sorted based on routing costs. In this way, locations that match a search query that are relatively far away but have lower routing costs may be ranked higher than locations that are relatively close but have higher routing costs. Multiple factors may determine how locations are ranked in response to a search query.

[0025] Figure 1 A block diagram and flow chart showing a process 100 for multipoint arrival and departure detection according to at least one example are illustrated. Figure 2, process 100 may be performed by a map server 222, a route server 242, or may be performed by a map engine 204 or a client application 206 on a user device 202. Alternatively, process 100 may be performed by any combination of: a map server 222, a route server 242, a map engine 204 on a user device 202, or a client application 206 on a user device 202. For example, a portion of process 100 may be performed by a map server 222, and a portion of process 100 may be performed by a map engine 204 on a user device 202. Process 100 provides a high-level overview of how multi-point arrival and departure detection may operate. Below, process 100 may be described as being performed on a user device 202, but as described above, a map server 222, a route server 242, a map engine 204 on a user device 202, or a client application 206 on a user device 202 may also perform all or part of process 100.

[0026] Process 100 is illustrated as a logical flow diagram, each operation of which represents a series of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, an operation represents a computer-executable instruction stored on one or more computer-readable storage media that, when executed by one or more processors, performs the described operation. Generally speaking, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement the described process.

[0027] At block 101, a user device may navigate or present navigation for a multi-point route. Block 110 illustrates an example multi-point route 111 that a user 112 is traveling. The multi-point route may have one or more intermediate waypoints and a destination. The multi-point route 111 may have an intermediate waypoint 114 and a destination 116. The multi-point route may include segments of a route that is a route from one intermediate waypoint to another intermediate waypoint or from an intermediate waypoint to a destination. Route segment 113 may represent current navigation to intermediate waypoint 114. Route segment 115 may represent future navigation from intermediate waypoint 114 to destination 116. The user device maintains navigation for the multi-point route.

[0028] At block 102 , the user device may detect that it has entered a pre-arrival zone associated with an intermediate waypoint. Block 120 illustrates an example of user 112 arriving at pre-arrival zone 121 associated with intermediate waypoint 114 .

[0029] The zone 112 before arrival can be determined in a variety of ways. In some implementations, the zone 112 before arrival can be an area that the user device receives from the server. In some implementations, the zone before arrival can be calculated. In some implementations, the zone 112 before arrival can be an area associated with the intermediate waypoint 114. The area can be defined using a road network topology and other area attributes. For example, the road network topology can apply a name to the area. Area attributes can be used to describe the attributes or purpose of a particular area. For example, an area attribute of an area can be that the area is a parking lot. In some implementations, the zone 112 before arrival can be defined as a specific distance or travel time from an area associated with the intermediate waypoint 114. For example, the zone 112 before arrival can be defined as within a specific distance from a parking lot, such as within 100 meters from a parking lot. The zone 112 before arrival can be associated with one or more entrances to a location represented by the intermediate waypoint 114. The zone 112 before arrival can be defined as within a specific distance from one or more entrances to a location represented by the intermediate waypoint 114. For example, the intermediate waypoint 114 can be associated with a location in a shopping mall. The shopping mall may have multiple entrances, so that the pre-arrival zone may be any location within a certain distance from any of the multiple entrances. The pre-arrival zone 112 may be defined as being within a certain time of travel from the intermediate waypoint 114. In some implementations, the pre-arrival zone may be defined by a distance or travel time relative to the intermediate waypoint 114 or an area associated with the intermediate waypoint 114. The pre-arrival zone 112 may include any combination of the above descriptions of example pre-arrival zones.

[0030] At box 103, once the user equipment has entered the pre-arrival zone, the position of the user equipment is periodically determined. These positions are stored to create a set of positions. The set of positions may also be referred to as a previous position or a set of previous positions. The period for determining the position of the user equipment may be any reasonable duration. The period for determining the position of the user equipment may have a range between 0.1 seconds and 10 seconds. The period may be 1 second, 2 seconds, 3 seconds, 4 seconds, 5 seconds, 6 seconds, 7 seconds, 8 seconds, 9 seconds or 10 seconds. Alternatively, the period may be 0.1 seconds, 0.2 seconds, 0.3 seconds, 0.4 seconds, 0.5 seconds, 0.6 seconds, 0.7 seconds, 0.8 seconds or 0.9 seconds.

[0031] In some implementations, only a certain number of positions are stored. For example, only the last ten positions may be stored. The number of positions to be stored may be any reasonable number of positions. For example, the number of positions to be stored may be 2-1000, or even more.

[0032] At block 104, a departure score is calculated based at least in part on a set of locations that are periodically determined. The departure score may also be calculated periodically. In some implementations, the period for calculating the departure score may be synchronized with the period for determining the location of the user device. In some implementations, the period for calculating the departure score may be different from the period for determining the location of the user device. The period for calculating the departure score may have a range between 0.1 seconds and 10 seconds. The period may be 1 second, 2 seconds, 3 seconds, 4 seconds, 5 seconds, 6 seconds, 7 seconds, 8 seconds, 9 seconds, or 10 seconds. Alternatively, the period may be 0.1 seconds, 0.2 seconds, 0.3 seconds, 0.4 seconds, 0.5 seconds, 0.6 seconds, 0.7 seconds, 0.8 seconds, or 0.9 seconds.

[0033] There are many ways to calculate the departure score. Any combination of the following factors may be used to calculate the departure score. The departure score may be calculated based at least in part on the number of previous positions within the zone before arrival. The departure score may be calculated based at least in part on the ratio of the number of previous positions within the zone before arrival. The departure score may be calculated based at least in part on the number of previous positions outside the zone before arrival. The departure score may logarithmically weight the previous positions starting from the most recent previous position. The departure score may be calculated based at least in part on the distance from the previous position to the intermediate waypoint. The departure score may be calculated based at least in part on the distance from the previous position to the entrance of the position associated with the waypoint. The departure score may be calculated based at least in part on the distance from the previous position to the parking lot associated with the waypoint. The departure score may be calculated based at least in part on the ratio of the distance of the previous position from the waypoint to the closest distance that the user device has reached the waypoint. The departure score may be calculated based at least in part on the time spent in the zone before arrival. The departure score may be calculated based at least in part on the number of detours that the client application or map engine must take after entering the zone before arrival. The departure score may be calculated based at least in part on an automatic advancement trend factor controlled by a user, a user device, a map server, a map engine, and / or a client application.

[0034] Block 130 provides an example of a set of previous locations that may indicate a user's intent to continue along a route. Location 131 may represent the location of the user device three cycles ago. Location 132 may represent the location of the user device two cycles ago. Location 133 may represent the location of the user device at the end of the previous cycle. A departure score may be calculated based at least in part on these locations according to the methods described above. Once the map engine determines the departure score and compares it to the departure threshold, the map engine may determine that the user intends to continue along the next leg of the multi-point route.

[0035] Block 140 provides an example of a set of previous locations that may indicate the user's intent to maintain navigation to the intermediate waypoint 114. Locations 141, 142, 143, 144, 145, 146, and 147 are all previous locations of the user device at the end of seven previous cycles. A departure score may be calculated based at least in part on these locations according to the methods described above. Once the map engine determines the departure score and compares it to the departure threshold, the map engine may determine that the user intends to maintain navigation to the intermediate waypoint.

[0036] At box 105, the user device may determine whether the user intends to advance navigation to the next segment of the multi-point route (e.g., to advance navigation to the next intermediate waypoint or destination) or whether the user intends to maintain navigation to the intermediate waypoint 114. The determination is based at least in part on a departure score related to a departure threshold. In some implementations, a departure score above the departure threshold indicates a departure. In some implementations, a departure score that is greater than or equal to the departure threshold may indicate an update to navigation to the next waypoint or segment of the multi-point route, such as at box 106. Navigation that updates to the next waypoint or segment of the multi-point route may also be considered to continue along the multi-point route. In some implementations, a departure score that is less than the departure threshold may indicate maintaining navigation to the current intermediate waypoint, such as at box 107. This example implementation is Figure 1 This is illustrated at boxes 105, 106 and 107 in FIG.

[0037] Alternatively (and not in Figure 1 In some embodiments, a departure score lower than or equal to the departure threshold may indicate to continue to the next segment of the multi-point route.

[0038] In some implementations, at block 105, the user device may determine to pause navigation until a future point ( Figure 1 The user device may determine to pause navigation based at least on a departure score related to a departure threshold. The user device may also determine to pause navigation based at least in part on an indication to pause (e.g., a user input to pause navigation). If the user device 202 receives an indication to pause navigation, navigation will be paused so that the multi-point route is stored until an indication to resume navigation appears.

[0039] In some implementations, at block 105, the user device may determine to resume navigation after navigation has been paused ( Figure 1). If the user device 202 receives an indication to resume navigation, the navigation is resumed to the previous point when the navigation was paused. For example, if the user device 202 was navigating to the intermediate waypoint 114 when the navigation was paused, the user device 202 resumes the navigation to the intermediate waypoint 114 when the navigation is resumed. An example indication to resume navigation may be a user input to resume navigation. In other specific implementations, the determination to resume navigation may be based at least in part on a departure score related to a departure threshold. The calculation of the departure score when the navigation is paused may be periodic. The period for calculating the departure score when the navigation is paused may be less than, equal to, or greater than the period for calculating the departure score when the navigation is active (e.g., when the navigation is resumed).

[0040] In some implementations, at box 105, the user device may determine to simultaneously present to the user a) maintenance navigation to the intermediate waypoint 114 and b) advancement navigation to the next point on the route. The user device 202 may then receive an indication of whether to maintain navigation to the intermediate waypoint 114 or to advance navigation to the next point on the route. For example, such indication may be a user input on the user device. In some implementations, when the user device 202 detects that the user device 202 has been diverted from the current route (e.g., maintenance navigation to the intermediate waypoint 114 and / or advancement navigation to the next point on the route) and the user device 202 has received detour route planning information for the current navigation, both maintenance navigation to the intermediate waypoint 114 and advancement navigation to the next point on the route may be presented simultaneously. The detour route planning information may be related to maintenance navigation to the intermediate waypoint 114 or advancement navigation to the next point on the route.

[0041] Figure 2 is a block diagram of an example system 200 for generating a map and a route plan based on map data and route plan data obtained from different sources. For example, the system 200 can be configured to obtain map data and route plan data from different sources (e.g., a map server, a route server, a map data provider), stitch together the map data from the different sources, and generate a map representing the map data and route plan data received from the various sources. When stitching together the map data and route plan data, the system 200 can make adjustments to the map data to avoid errors, discrepancies, and map appearance issues, as described in detail below.

[0042] In some implementations, the system 200 may include a user device 202. For example, the user device 202 may be a computing device such as a laptop computer, a desktop computer, a smart phone, a wearable device (e.g., a smart watch, smart glasses, etc.), an in-vehicle information system, and / or other computing devices. The user device 202 may include a built-in display and / or may be connected to an external display (e.g., a television, a computer monitor, an in-vehicle system, smart glasses, etc.) using a wired and / or wireless connection. The user device 202 may present a graphical user interface generated by various software components (e.g., an operating system, user-level applications, etc.) installed and / or running on the user device 202 on the built-in display and / or the connected external display.

[0043] In some implementations, the user device 202 may include a map engine 204. The map engine 204 may enable a client application 206 on the user device 202 to access map data and route planning data received through the system 200. The map engine 204 may also process map-related data provided, for example, by a map provider 252 or a map server 222. The map engine may also process route-related data provided, for example, by a route server 242. In some implementations, the client application 206 may obtain map data from a map server to present various types of maps and / or map data. The client application 206 may then process the map data received from the map server to generate a graphical user interface presented on a display of the user device 202. For example, the client application 206 may obtain map data from a map server 222 running on a server device 220 via a network 230 (e.g., a local area network, a wide area network, a wireless network, a cellular data network, the Internet, etc.).

[0044] In some specific implementations, the user device may have a client application 206 that accesses map data through the map engine 204. For example, a navigation application for providing guidance may be one of the client applications 206. The client application 206 may generate and / or present a graphical user interface for presenting map data on a display (e.g., built-in, external, etc.) of the user device 202. The client application 206 may present various types of maps representing various types of map data. For example, the client application 206 may present a map representing elevation, vegetation, coastline, land cover, precipitation, and / or other data, as may be described herein. An example client application may be a navigation application. The navigation application may provide a graphical user interface that allows the user to specify route parameters (e.g., starting location, destination location, traffic mode, etc.) and request navigation instructions based on the specified route parameters. The navigation application may present a recommended route based on the route parameters specified by the user and present navigation instructions for the route selected by the user. In some specific implementations, the client application 206 receives route information directly from the route server 242.

[0045] In some implementations, the system 200 may include a server device 220. For example, the server device 220 may be a computing device configured to host a map server 222. The map server 222 may be a software server or a collection of software servers configured to generate map data, maps, routing data, and / or routes for a client device (e.g., the user device 202) and / or the client application 206.

[0046] In some implementations, the map server 222 may obtain map data from various map data providers. For example, different map data providers may specialize in different types of map data. For example, various different map providers may specialize in and / or provide high-quality terrain elevation data, ocean elevation data, climate data, land cover data, etc. For example, the map server 222 may receive route information from the route server 242. Thus, the map server 222 may obtain different types of map data from different sources or providers. The map server 222 may combine the different types of map data received from different map providers into combined map data that may be provided to the client application 206 or the map engine 204 on the user device 202.

[0047] In some implementations, the system 200 may include a server device 240. For example, the server device 240 may be a computing device connected to the network 230. The server device 240 is configured to communicate with the server device 220 via the network 230 to deliver the route planning data to the server device 220. For example, the server device 240 may include a route server 242 (e.g., a software server) that processes the provider map data and provides the route planning data to the map server 222 on the server device 220.

[0048] In some implementations, the system 200 may include a server device 250. For example, the server device 250 may be a computing device connected to the network 230. The server device 250 is configured to communicate with the server device 220 over the network 230 to deliver map vendor data to the server device 220. For example, the server device 250 may include map vendors 252 that may function as servers (e.g., software servers) that process and provide vendor map data to a map server 222 on the server device 220. One of the map vendors 252 may, for example, manage and provide terrain elevation map data to the map server 222, while another of the map vendors 252 may manage and provide land cover data (e.g., vegetation, forests, urban shrubs, etc.) to the map server 222. One map vendor 252 may be associated with a different type of vendor map data than another map vendor 252. In some implementations, one map vendor 252 may be associated with the same type of vendor map data as another map vendor 252. The map vendors 252 may manage and serve any type of map data, including various types of map data as may be described herein. In some implementations, route server 242 may be one of map providers 252 .

[0049] Figure 3 An example map 300 is illustrated with portions of a multi-point route drawn thereon. The multi-point route has a current route segment 310 and a future route segment 330 to an intermediate waypoint 320. The example map 200 also has a parking lot 324 and multiple entrances, with circles 322 representing radial distances around the entrances.

[0050] In some implementations, the current route segment 310 and the future route segment 330 to the intermediate waypoint 320 are displayed on the user device. The current route segment 310 and the future route segment 330 can be distinguished, for example, by being marked with different colors, opacities, or with different patterns.

[0051] refer to Figure 1 102, the example map 300 has several examples of pre-arrival zones that trigger determination of locations and calculation of departure scores for intermediate waypoints 320. As described above, a parking lot 324 can be designated as a pre-arrival zone. In some implementations, the parking lot 324 can be used as a center point of the pre-arrival zone, and the distance from the center point defines the pre-arrival zone. A circle 322 representing the radial distance around the entrance to the location associated with the waypoint 320 can also be designated as a pre-arrival zone. In this example, the circle 322 would represent a smaller pre-arrival zone. In some implementations, both the parking lot 324 and the circle 322 around the entrance to the location associated with the waypoint 320 can be designated as part of the pre-arrival zone of the waypoint 320.

[0052] In some embodiments, the user interface on the user device 202 presents a user interface element that allows the user to control whether to advance the multi-point route. Advancing along the multi-point route can also be referred to as advancing navigation. In some specific implementations, once the user device 202 has entered the pre-arrival zone 121 associated with the intermediate waypoint 114, these user interface elements can be presented. In some specific implementations, these user interface elements can be presented after the user device 202 has entered the pre-arrival zone 121 associated with the intermediate waypoint 114 for a certain length of time or a certain number of position determination cycles. For example, a user interface element can be a "go to the next point" or "continue" user interface element. If the user device 202 receives an indication of "go to the next point", the navigation will be updated to advance to the next point on the multi-point route.

[0053] In another example, a user interface element may be "maintain current navigation", and if the user device 202 receives an indication to "maintain current navigation", the presented navigation will continue to navigate to the intermediate waypoint 114. In some implementations, if the user device 202 receives an indication to "maintain current navigation", a user interface element may be presented to "advance to the next point" as described above.

[0054] In another example, a user interface element may be a "pause navigation" user interface element. If the user device 202 receives an indication to "pause navigation," navigation will be paused so that the multi-point route is stored until an indication to restart navigation appears. In some implementations, if the user device 202 receives an indication to "pause navigation," a user interface element may be presented to "resume navigation." If the user device 202 receives an indication to "resume navigation," navigation is resumed to the previous point when navigation was paused. For example, if the user device 202 was navigating to the intermediate waypoint 114 when navigation was paused, the user device 202 will resume navigation to the intermediate waypoint 114 when navigation is resumed.

[0055] Figure 4A flow chart showing an example process 400 for multi-point route planning arrival and departure detection according to at least one example is illustrated. The process 400 may be performed by a user device 202, a map server 222, or a route server 242. Any portion of the process 400 may be performed by a user device 202, a map server 222, or a route server 242. When any portion of the process 400 is performed on a user device 202, it may be performed by a map engine 204 or by a client application 206. When any portion of the process 400 is performed on a user device 202, it may be performed by a map engine 204 of the user device 202 in response to a request from a client application 206 for a navigation route. Hereinafter, the process 400 may be described as being performed by the user device 202, but as described above, the map server 222, the route server 242, the map engine 204, or the client application 206 may also perform all or part of the process 400.

[0056] Process 400 is illustrated as a logical flow diagram, each operation of which represents a series of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, an operation represents a computer-executable instruction stored on one or more computer-readable storage media that, when executed by one or more processors, performs the operation. Generally speaking, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement the described process.

[0057] Process 400 begins at block 402 by maintaining navigation to a first intermediate waypoint by a user device. The first intermediate waypoint may correspond to a multi-waypoint route on a map. The multi-waypoint route may have one or more intermediate waypoints and a destination.

[0058] At block 404, process 400 includes determining, by the user equipment, whether the user equipment is within a certain zone. The zone may correspond to a first intermediate waypoint of a multiple waypoint route.

[0059] In some examples, the zone may include a parking area associated with the first intermediate waypoint. The zone may include an area within a certain distance from the first intermediate waypoint. The zone may include an area within a certain distance from an entrance associated with the first intermediate waypoint. The zone may include an area within a certain distance from one or more entrances associated with the first intermediate waypoint. The zone may include any combination of the following: an area within a certain distance from the first intermediate waypoint, an area within a certain distance from an entrance associated with the first intermediate waypoint, an area within a certain distance from one or more entrances associated with the first intermediate waypoint, and a parking area associated with the first intermediate waypoint.

[0060] At block 406, process 400 includes identifying a set of positions of the user device in response to determining that the user device is within a zone corresponding to the first intermediate waypoint. Each position in the set of positions may be identified by the user device at least periodically. In some examples, the period for identifying each position in the set of positions is one second. In some examples, the set of positions is limited to a maximum number of positions, with the oldest position replaced by the newest position, e.g., first-in, last-out.

[0061] At block 408, process 400 includes determining, by the user device, a set of weights for the locations. Each weight in the set of weights may correspond to a location in the set of locations. Each weight may be based at least in part on a time since the corresponding location was identified.

[0062] At block 410 , process 400 includes determining, by the user device, a departure score based at least in part on the set of weights and the set of locations.

[0063] In some examples, the departure score may be based at least in part on any of the following: the number of locations in the set of locations that are within the zone, the ratio of the number of locations in the set of locations that are within the zone compared to the total number of locations in the set of locations, the number of locations in the set of locations that are outside the zone, the distance of a location in the set of locations from the zone, the distance of a location in the set of locations from the first intermediate waypoint, the distance of a location in the set of locations from the first intermediate waypoint, an auto-advancement trend factor, or the number of detours to the first intermediate waypoint after the user device enters the zone. Each of the above factors in determining the departure score may be weighted equally or differently.

[0064] In some examples, the departure score may be based on any combination of the number of locations in the set of locations that are within the zone, the ratio of the number of locations in the set of locations that are within the zone compared to the total number of locations in the set of locations, the number of locations in the set of locations that are outside the zone, the distance of locations in the set of locations from the zone, the distance of locations in the set of locations from the first intermediate waypoint, the distance of locations in the set of locations from the first intermediate waypoint, an auto-advancement trend factor, or the number of detours to the first intermediate waypoint after the user device enters the zone. Each of the above factors in determining the departure score may be weighted equally or differently.

[0065] In some examples, a departure score may be calculated at least periodically.

[0066] At block 412 , process 400 includes updating the multi-waypoint route on the map based at least in part on the departure score.

[0067] In some examples, updating the multi-waypoint route includes maintaining navigation to the first intermediate waypoint based at least in part on the departure score related to the departure threshold.

[0068] In some examples, updating the multi-waypoint route includes advancing navigation from a first intermediate waypoint to a second intermediate waypoint based at least in part on a departure score related to a departure threshold.

[0069] In some examples, updating the multi-waypoint route includes advancing navigation from the first intermediate waypoint to the destination based at least in part on a departure score related to a departure threshold.

[0070] Figure 5 A block diagram and flow chart showing a process 500 for spatiotemporally distributing search results along a route according to at least one example are illustrated. The process 500 may include the use of a user device 520, a map server 530, and a route server 540. The map server 530 and the route server 540 do not necessarily have to be on separate devices. In some implementations, the map server 530 and the route server 540 are applications and / or services on one or more computing devices.

[0071] Portions of the process 500 may be referred to as being performed by the user device 520. Any portion of the process 500 referred to as being performed by the user device 520 may be performed or implemented by the map engine 204 on the user device 520 or the client application 206 on the user device 520. In some implementations, a portion of the process referred to as being performed by the user device 520 may be performed by the map engine 204, while another portion of the process referred to as being performed by the user device 520 may be performed by the client application 206.

[0072] Process 500 is illustrated as a logical flow diagram, each operation of which represents a series of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, an operation represents a computer-executable instruction stored on one or more computer-readable storage media that, when executed by one or more processors, performs the operation. Generally speaking, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement the described process.

[0073] At block 502, the user device 520 may request route information to a target destination from the route server 540. Prior to block 102, a search query may also be optionally transmitted by the user device 520 to the map server 530 to find a location or a list of potential locations. In such a specific implementation, the user device 520 will receive a location or a list of potential locations. Once a target destination is selected from the location or the list of potential locations, the user device 520 will request route information to the target destination from the route server 540.

[0074] At block 504, user device 520 may receive route information for the target destination from route server 540. User device 502 may then use the route information to present navigation to the target destination on a user interface of user device 502. For example, client application 206 may present navigation based at least in part on the route information.

[0075] At block 506, the user device 520 transmits a search query and route metadata to the map server 530 on the way to the target destination. For example, a search query for "coffee" may be transmitted to the map server 530. The search query may indicate an intent to add an intermediate waypoint to the current navigation of the current route. The route metadata may indicate the current navigation of the current route. In some implementations, the route metadata may include a set of latitudes and longitudes associated with the route.

[0076] At box 508, the map server 530 may process the search query and the route metadata to generate a list of locations or potential locations along the route. The map server 530 may process the route metadata to determine navigation and / or routes on the user device 520. The map server 530 may then create a set of bounding boxes along the route that limit the search results in response to the search query to within the bounding box of the route. The bounding box may indicate the maximum distance between the potential location and the route. In some embodiments, the bounding box may represent the physical distance from the route. In some embodiments, the bounding box may represent the distance from the route associated with the physical distance from the route. In some specific implementations, the generated list of locations or potential locations may extend beyond intermediate waypoints or destinations of the route.

[0077] In some embodiments, a search query may be used to ascertain the user's intent. If a search query is entered that will generate results that are not along a route (as determined by the received route metadata), the location list generated by the map server 530 is not limited to along the route. For example, if the search query "cafes in New York" is entered while the user device 202 is navigating a route that is not associated with New York, the location list generated will not be along the route. Instead, the user's intent is determined to limit their search query to a specific location regardless of the current route. Similarly, if the search query is for a unique or specific location, the location list generated by the map server 530 is not limited to the route. For example, if the search query "Statue of Liberty" is entered while the user device 202 is navigating a route, the location list generated will not be along the route. Instead, the user's intent is determined to limit their search query to a unique location regardless of the current route.

[0078] In some implementations, the mode of transportation used in association with the route may be used to determine the list of locations to generate. For example, if the user device has information that the route is being navigated by a bicycle, the generated list of locations may include closer locations than if the route is being navigated by a car.

[0079] In some implementations, a specific search query can be associated with a specific restriction on the location list. For example, the search query "refueling", "charging", or "electric vehicle charging" will provide more results for locations closer to the user's device. Generally speaking, these specific search queries will be associated with more urgent topics, such as refueling, electric vehicle charging, and medical care.

[0080] In some implementations, the search query is limited to a subset of the route. The route may already be a multi-point route with one or more intermediate waypoints and a target destination. In some embodiments, the search query is limited to the portion of the route up to the next point on the multi-point route. For example, referring to Figure 1 , if the user device 202 is navigating to the intermediate waypoint 114, the search query will generate a list of locations between the location of the user device 202 and the intermediate waypoint 114. In some implementations, if there are too few results between the location of the user device 202 and the intermediate waypoint 114, the search query will generate a list of locations that include any combination of the following: locations behind the user device 202 and locations along the previously traveled portion of the route.

[0081] The map server 530 may process the search query based on a set of bounding boxes to generate a list of search results along the route. In some implementations, the search query associated with the first set of bounding boxes may not return enough results. For example, the search query associated with the first set of bounding boxes may only return ten results. If the list of search results does not include enough results, the map server may generate a larger second set of bounding boxes along the route. If the list of search results associated with the second set of bounding boxes is also insufficient, the map server may generate a third set of bounding boxes that includes bounding boxes of previously traveled portions along the route. In some implementations, the bounding boxes may include areas outside the destination or intermediate waypoints to find locations.

[0082] The map server 530 may then process the search results list to create a processed search results list. Processing the search results list may include classifying the search results list. The map server 530 may classify the search results list according to a number of criteria including multiple criteria. The criteria for classification here may include whether the location corresponding to the search result is open or will likely be open upon arrival. For example, a search result for "coffee" may be processed at 7:55 a.m., and one of the locations corresponding to the search results will be open at 8:00 a.m. Such results may be classified as above closed locations. Such results may be classified as equal (in this particular criterion) to the location corresponding to the search result currently open at 7:55 a.m. Such results may be classified as above closed locations and below currently open locations. Other criteria may include the popularity of the location. Popularity may be ascertained in various ways, such as the frequency with which other users choose to visit the location based on similar search queries. Popularity may also be ascertained by importing comment information from a comment service.

[0083] Processing the search results list may include filtering the search results list down into subgroups. For example, the map server may remove the last four hundred results from a classified search results list having five hundred results. In some embodiments, the search results list may be filtered using the location of the search results along the route. In some embodiments, the route may be divided into multiple segments. Some route segments may be closer to the user device 520, while other route segments may be farther away from the user device 520 along the route. For example, the number of route segments may be seven, but it can also be configured to any number. Each route segment may have an associated quota. When the result list is processed, the location associated with each route segment may be assigned a quota until the quota is full. In some embodiments, the quota of a closer segment may be greater than the quota of a farther segment. In some embodiments, if the quota for another segment is not full, those unfilled time slots may be given to the closer segment to fill.

[0084] At block 510, the map server 530 may transmit the processed search result list to the route server 540. The map server 530 may also transmit route metadata associated with the current navigation route to the route server 540.

[0085] The route server 540 can process the route metadata and the processed search results list to determine a detour for each result in the processed search results list and the associated routing cost and detour metadata. The route server 540 can determine an estimated time it will take for the detour route to travel from the navigation route to each search result in the processed search results list.

[0086] At block 512, the route server 540 may transmit the processed search result list with associated detours, route planning costs, and detour metadata to the map server 530. The map server 530 may then process the processed search result list with associated detours, route planning costs, and detour metadata to generate a final search result list. After sorting and filtering the processed search result list with associated detours, route planning costs, and detour metadata, a final search result list may be generated.

[0087] The map server 530 may classify the processed search result list with associated detours, routing costs, and detour metadata according to many criteria including multiple criteria. The criteria used for classification here may include routing cost information, such as the time or distance from the route to the search result. Other criteria may include whether the search result is open or popular, as described above. The search results may also be classified by the proximity of the user device location. For example, search results associated with the most recent segment of the route may be classified as higher than search results associated with other segments. In some embodiments, results associated with previously traveled portions of the route are classified as lower on the final search result list.

[0088] The map server 530 may filter the processed search result list with associated detours, route planning costs, and detour metadata according to many criteria including multiple criteria. For example, the map server may remove the last four hundred results from a search result list with five hundred results. In some specific implementations, the search result list with associated detours, route planning costs, and detour metadata may be filtered using the location of the search results along the route. As described above, the route may be divided into multiple segments. Some route segments may be closer to the user device 520, while other route segments may be farther away from the user device 520 along the route. Each route segment may have an associated quota. When the search result list with associated detours, route planning costs, and detour metadata is processed, the location associated with each route segment may be assigned to a quota until the quota is full. In some specific implementations, the quota of the closer segment may be greater than the quota of the farther segment. In some specific implementations, if the quota for another segment is not full, those unfull time slots may be given to the closer segment to fill.

[0089] At block 514, the map server 530 may transmit a final search result list with detours and associated costs and detour metadata to the user device 520. At the user device 520, the client application 206 may present the search results with detours and associated costs and route metadata. The search result may then be selected and added to the current navigation of the route.

[0090] Fig. 6A , Figure 6B and Figure 6C An example user interface for the spatiotemporal distribution of search results that may be presented on user device 520 is illustrated. For example, a user interface similar to Fig. 6A , Figure 6B and Figure 6C User interface.

[0091] Fig. 6A An example map view and accompanying user elements for entering a search query are illustrated. The user device location is represented by a user location icon 610. The current route is represented by a route 620. The user interface of the user device 520 may present a user interface element for adding an intermediate waypoint. For example, the user interface may have an "add stop" user interface element 630. When the user interface element receives an indication to add an intermediate waypoint, a search bar 632 may appear. A search query may be entered into the search bar 632.

[0092] Figure 6BAn example map view and accompanying user elements are illustrated after a search query has been entered and results have been returned. The user interface may present a user interface element for a search query location 640. If more than one user interface element for a search query location 640 overlaps due to proximity of the search query location 640, they may be combined and a number may indicate how many search query locations 640 are approximately at the user interface element for the search query location. The user interface may also present a list of search query locations 634. In some implementations, the list of search query locations is partially obscured when the map view is displayed.

[0093] Figure 6C An example user interface element for displaying a list of search query locations 634 is illustrated. The list of search query locations 634 may be selected to obscure the map view. Each location 636 on the list of search query locations 634 may be presented. Important information may be included with each location 636 on the list of search query locations 634. For example, each location 636 may include name information, information about business hours, and comments indicating popularity. Each location 636 may also include detour cost information 638. The detour cost information may be any combination of the following items: the total round-trip distance from the current route to the location and back to the current route, the one-way distance from the current route to the location, the total round-trip time added to the route due to traveling to the location and back to the current route, and the one-way time added to the route due to traveling from the current route to the location. Locations 636 may be added to the current route via the use of the add to route user interface element 660.

[0094] In some implementations, the list of search query locations 634 may include a grouping user interface element 650. The grouping user interface element 650 may be used to group subgroups of the list of search query locations 634 according to various characteristics. The subgroups may be based on any combination of: detour cost information, reviews indicating popularity, and whether the location is currently open. For example, in Figure 6C , locations 636 that are open, have a rating of 4.0 or higher, and are within 0.2 miles of the route are located above the grouping user interface element 650. Likewise, permanently closed locations 636 are placed below the second grouping user interface element 650.

[0095] Figure 7 A flow chart illustrating an example process 700 for displaying a spatiotemporal distribution for search results according to at least one example is shown. Process 700 may be performed by map server 230. Portions of process 700 have corresponding portions of other processes on user device 202 and route server 240.

[0096] Process 700 is illustrated as a logical flow diagram, each operation of which represents a series of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, an operation represents a computer-executable instruction stored on one or more computer-readable storage media that, when executed by one or more processors, performs the operation. Generally speaking, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement the described process.

[0097] Process 700 begins at block 702 by receiving a search query by a computing device during presentation of a route associated with a map. The search query may be used to determine one or more associated locations on the map. The route may include one or more bounding boxes associated with points on the route.

[0098] In some examples, the route may be a multi-point route including one or more intermediate waypoints.

[0099] In some examples, locations on a map associated with a search query can be further filtered based on context. The context can include transportation options and / or popularity of the location.

[0100] At block 704, process 700 includes determining, by the computing device, locations on the map associated with the search query that are within one or more bounding boxes along the route.

[0101] In some examples, the location on the map associated with the search query may correspond to a location between a location associated with a navigation device maintaining and / or guiding route navigation and a first intermediate waypoint of the one or more intermediate waypoints.

[0102] At block 706, process 700 includes receiving, by the computing device, routing cost information associated with each of the locations from a routing server.

[0103] At block 708 , process 700 includes generating, by a computing device, a distribution of locations based at least in part on the routing cost information, the distribution configured to include a subset of locations distributed over a threshold portion of the route.

[0104] In some examples, the threshold portion of the route may include the entire route. In some examples, the threshold portion of the route may correspond to the portion of the route closest to the navigation device that maintains and / or navigates the route. In some examples, the threshold portion of the route may correspond to the portion of the route between the navigation device and the first intermediate waypoint of the route. In some examples, the threshold portion of the route may correspond to the portion of the route closest to the destination of the route. In some examples, the threshold portion of the route may include an area beyond the destination of the route. For example, a previous destination of the route may become an intermediate waypoint and a new destination may be added to the end of the route.

[0105] In some examples, the threshold portion of the route can be divided into a set of segments. The location can be determined based at least in part on having a location corresponding to each segment of the route.

[0106] At block 710, process 700 includes displaying, by the computing device, at least a portion of the subset of locations on a user interface of the computing device according to the distribution.

[0107] In some examples, locations displayed on a user interface may be categorized based at least in part on routing cost information.

[0108] Figure 8 An example architecture or environment 800 configured to implement the techniques described herein is illustrated according to at least one example. The architecture 800 includes a user device 806 (e.g., user device 204) and a service provider computer 802 (e.g., service devices 220, 240, 250). In some examples, the example architecture 800 may be further configured to enable the user device 806 and the service provider computer 802 to share information. In some examples, the devices may be connected via one or more networks 808 (e.g., via Bluetooth, WiFi, the Internet). In some examples, the service provider computer 802 may be configured to implement at least some of the techniques described herein with reference to the user device 806, and vice versa.

[0109] In some examples, the network 808 may include any one or combination of many different types of networks, such as a wired network, the Internet, a wireless network, a cellular network, a satellite network, other private networks, and / or public networks, or any combination thereof. Although the illustrated example shows a user device 806 accessing a service provider computer 802 via the network 808, the techniques described are equally applicable to situations where the user device 806 interacts with the service provider computer 802 via a landline, via a public phone booth, or in any other manner. It is also noted that the techniques described are applicable to other client / server arrangements (e.g., set-top boxes) as well as non-client / server arrangements (e.g., locally stored applications, peer-to-peer configurations).

[0110] As described above, the user device 806 may be any type of computing device, such as, but not limited to, a mobile phone, a smart phone, a personal digital assistant (PDA), a laptop computer, a desktop computer, a thin client device, a tablet computer, a wearable device (such as a smart watch), etc. In some examples, the user device 806 may communicate with the service provider computer 802 via the network 808 or via other network connections.

[0111] In an exemplary configuration, the user device 806 may include at least one memory 814 and one or more processing units (or processors) 816. The processor 816 may be implemented in hardware, computer executable instructions, firmware, or a combination thereof as appropriate. The computer executable instructions or firmware implementation of the processor 816 may include computer executable instructions or machine executable instructions written in any suitable programming language to perform the various functions described. The user device 806 may also include a geographic location device (e.g., a global positioning system (GPS) device, etc.) for providing and / or recording geographic location information associated with the user device 806. In some examples, the processor 816 may include a GPU and a CPU.

[0112] The memory 814 can store program instructions that can be loaded and executed on the processor 816 and data generated during the execution of these programs. Depending on the configuration and type of the user device 806, the memory 814 can be a volatile memory (such as a random access memory (RAM) and / or a non-volatile memory (such as a read-only memory (ROM), flash memory). The user device 806 may also include additional removable storage devices and / or non-removable storage devices 826, including but not limited to magnetic storage devices, optical disks and / or tape storage devices. The disk drive and its associated non-transitory computer-readable media can provide a non-volatile storage device for computer-readable instructions, data structures, program modules and other data for the computing device. In some specific implementations, the memory 814 may include a variety of different types of memory, such as static random access memory (SRAM), dynamic random access memory (DRAM) or ROM. Although the volatile memory described herein may be referred to as RAM, any volatile memory that will not retain the data stored therein after being unplugged from the host and / or power supply is appropriate.

[0113] Removable and non-removable memory 814 and additional storage device 826 are examples of non-transient computer-readable storage media. For example, non-transient computer-readable storage media may include volatile or non-volatile, removable or non-removable media, which are implemented by any method or technology to store information such as computer-readable instructions, data structures, program modules or other data. Memory 814 and additional storage device 826 are examples of non-transient computer storage media. Additional types of computer storage media that may be present in user device 806 may include, but are not limited to, phase change RAM (PRAM), SRAM, DRAM, RAM, ROM, electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact disk read-only memory (CD-ROM), digital video disk (DVD) or other optical storage device, cassette, tape, disk storage device or other magnetic storage device, or any other medium that can be used to store the required information and can be accessed by user device 806. Any combination of the above should also be included in the scope of non-transient computer-readable storage media. Alternatively, computer-readable communication media may include computer-readable instructions, program modules or other data sent in a data signal such as a carrier or other transmission means. However, as used herein, computer-readable storage media does not include computer-readable communication media.

[0114] The user device 806 may also contain communication connections 828 that allow the user device 806 to communicate with a data repository, another computing device or server, a user terminal, and / or other devices via the network 808. The user device 806 may also include I / O devices 830, such as a keyboard, a mouse, a pen, a voice input device, a touch screen input device, a display, a speaker, and a printer.

[0115] Turning to the contents of memory 814 in more detail, memory 814 may include an operating system 812 and / or one or more applications or services for implementing the features disclosed herein, such as application 811 (e.g., map engine 204, client application 206, health application, digital wallet, third-party application, browser application, etc.). Application 811 (e.g., map engine 204, client application 206) may perform some or all of the techniques (or corresponding techniques) described with reference to processes 100, 300, 400, 500, 700. Similarly, at least some of the techniques described with reference to service provider computer 802 may be performed by user device 806.

[0116] The service provider computer 802 may also be any type of computing device, such as, but not limited to, a collection of virtual or "cloud" computing resources, a remote server, a mobile phone, a smart phone, a PDA, a laptop computer, a desktop computer, a thin client device, a tablet computer, a wearable device, a server computer, or a virtual machine instance. In some examples, the service provider computer 802 may communicate with the user device 806 via a network 808 or via other network connections.

[0117] In one exemplary configuration, the service provider computer 802 may include at least one memory 842 and one or more processing units (or processors) 844. The processor 844 may be implemented in hardware, computer executable instructions, firmware, or a combination thereof, as appropriate. The computer executable instructions or firmware implementation of the processor 844 may include computer executable instructions or machine executable instructions written in any suitable programming language to perform the various functions described.

[0118] The memory 842 can store program instructions that can be loaded and executed on the processor 844 and data generated during the execution of these programs. Depending on the configuration and type of the service provider computer 802, the memory 842 can be a volatile memory (such as RAM) and / or a non-volatile memory (such as ROM, flash memory). The service provider computer 802 may also include additional removable storage devices and / or non-removable storage devices 846, including but not limited to magnetic storage devices, optical disks and / or tape storage devices. Disk drives and their associated non-transient computer-readable media can provide non-volatile storage devices for computer-readable instructions, data structures, program modules and other data for computing devices. In some specific implementations, the memory 842 may include a variety of different types of memory, such as SRAM, DRAM or ROM. Although the volatile memory described herein can be referred to as RAM, any volatile memory that will not retain the data stored therein after being unplugged from the host and / or power supply is appropriate. Removable and non-removable memory 842 and additional storage devices 846 are additional examples of non-transient computer-readable storage media.

[0119] The service provider computer 802 may also contain communication connections 848 that allow the service provider computer 802 to communicate with a data repository, another computing device or server, a user terminal, and / or other devices via the network 808. The service provider computer 802 may also include I / O devices 850, such as a keyboard, a mouse, a pen, a voice input device, a touch input device, a display, speakers, and a printer.

[0120] Turning to the contents of memory 842 in more detail, memory 842 may include an operating system 852 and / or one or more applications 841 or services for implementing the features disclosed herein. For example, services and applications associated with or corresponding to map server 222, route server 242, and map provider 252 correspond to application 1041 on service provider 1002, so that server devices 220, 240, 250 may include other applications for other features and / or services. Application 1041 (e.g., map server 222, route server 242, and map provider 252) may perform some or all of the techniques (or corresponding techniques) described with reference to processes 100, 300, 400, 500, 700.

[0121] Various examples can be further implemented in a variety of operating environments, in some cases, the operating environment may include one or more user computers, computing devices or processing devices that can be used to operate any of a plurality of applications. User equipment or client devices may include any of many general personal computers, such as desktop computers or laptop computers running standard operating systems, and cellular devices, wireless devices and handheld devices that run mobile software and can support multiple networking protocols and instant messaging protocols. Such a system may also include multiple workstations running a variety of commercially available operating systems and any of other known applications for purposes such as development and database management. These devices may also include other electronic devices, such as virtual terminals, thin clients, gaming systems and other devices that can communicate via a network.

[0122] Most examples utilize at least one network familiar to those skilled in the art to support communications using any of a variety of commercial protocols such as TCP / IP, OSI, FTP, UPnP, NFS, CIFS, and AppleTalk. The network can be, for example, a local area network, a wide area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof.

[0123] In the example of utilizing a web server, the web server can run any of a variety of server or middle-tier applications, including HTTP servers, FTP servers, CGI servers, data servers, Java servers, and business application servers. The server can also execute programs or scripts to respond to requests from user devices, such as by executing one or more applications, which can be implemented as a web application such as a web server. One or more scripts or programs written in any programming language such as C, C# or C++ or any scripting language such as Perl, Python or TCL, and combinations thereof. The server may also include a database server, including but not limited to databases available from and Those obtained commercially.

[0124] Environment can include various data storage repositories and other memory and storage media, as discussed above. These can reside in various locations, such as on a storage medium local to one or more computers or on a storage medium away from any or all computers on a network (and / or reside in one or more computers). In a specific set of examples, information can reside in a storage area network (SAN) familiar to those skilled in the art. Similarly, any necessary files for performing functions belonging to a computer, server or other network device can be stored locally and / or remotely as needed. In the case where the system includes a computerized device, each such device may include hardware elements that can be electrically coupled via a bus, including, for example, at least one central processing unit (CPU), at least one input device (e.g., mouse, keyboard, controller, touch screen, keyboard) and at least one output device (e.g., display device, printer, speaker). Such systems may also include one or more storage devices, such as disk drives, optical storage devices and solid-state storage devices such as RAM or ROM, as well as removable media devices, memory cards, flash memory cards, etc.

[0125] Such devices may also include a computer-readable storage medium reader, a communication device (e.g., a modem, a network card (wireless or wired), an infrared communication device) and a working memory as described above. A computer-readable storage medium reader may be connected to or configured to receive a non-transient computer-readable storage medium representing a remote, local, fixed and / or removable storage device, and a storage medium for temporarily and / or more permanently containing, storing, sending and retrieving computer-readable information. Systems and various devices typically also include a plurality of software applications, modules, services or other elements located in at least one working memory device, including operating systems and applications such as client applications or browsers. It should be understood that alternative examples may have many variations described above. For example, custom hardware may also be used, and / or specific elements may be implemented in hardware, software (including portable software, such as applets), or both. In addition, connections with other computing devices such as network input / output devices may be employed.

[0126] Non-transitory storage media and computer-readable media for containing code or portions of code may include any suitable media known or used in the art, including storage media, such as but not limited to volatile and non-volatile, removable and non-removable media, which may be implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical storage devices, cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, or any other medium that can be used to store the desired information and can be accessed by system devices. Based at least in part on the disclosure and teachings provided herein, a person of ordinary skill in the art will understand other ways and / or methods for implementing the various examples.

[0127] Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the present disclosure as set forth in the claims.

[0128] Other variations are within the spirit of the present disclosure. Thus, while the disclosed technology is susceptible to various modifications and alternative constructions, certain illustrative examples thereof are shown in the drawings and have been described in detail above. However, it should be understood that it is not intended to limit the present disclosure to the particular forms disclosed, but on the contrary, it is intended to cover all modifications, alternative constructions, and equivalent forms that fall within the spirit and scope of the present disclosure as defined by the appended claims.

[0129] The use of the terms "one" and "an" and "the" and similar indicators in the context of describing the disclosed examples (especially in the context of the following claims) will be interpreted as covering the singular and plural, unless otherwise stated or clearly contradicted by the context. Unless otherwise noted, the terms "including" and "having" should be understood as open terms (i.e., meaning "including but not limited to"). The term "connected" is interpreted as being partially or completely included, attached or joined together even if there are intervening things. Unless otherwise specified herein, the description of the numerical range herein is only intended to be used as a simple method of individually referring to each individual value falling within the range, and each individual value is incorporated into the specification as if quoted separately in this article. All methods described herein can be performed in any suitable order, unless otherwise specified herein or otherwise clearly contradicted by the context. Unless otherwise stated, the use of any and all examples or exemplary language (e.g., "such as") provided herein is only intended to better illustrate the examples of the present disclosure, and will not limit the scope of the present disclosure. Any language in the specification should not be interpreted as indicating that any undeclared element is essential to the practice of the present disclosure.

[0130] Unless specifically stated otherwise, disjunctive language such as the phrase "at least one of X, Y, or Z" is understood in context as generally used to present an item, term, etc., which may be X, Y, or Z, or any combination thereof (e.g., X, Y, and / or Z). Thus, such disjunctive language is generally not intended to, and should not, imply that certain examples require that at least one of X, at least one of Y, or at least one of Z each be present.

[0131] Preferred examples of the disclosure are described herein, including the best mode known to the inventors for carrying out the disclosure. Variations of those preferred examples may become apparent to those of ordinary skill in the art upon reading the foregoing description.

[0132] The inventor expects that the skilled person will appropriately adopt such variant forms, and the inventor intends to practice the present disclosure in a manner different from that specifically described herein. Therefore, as permitted by applicable law, the present disclosure includes all modifications and equivalents of the subject matter recorded in the claims attached to the present disclosure. In addition, unless otherwise indicated herein or clearly contradictory to the context, the present disclosure includes any combination of all possible variant forms of the above elements.

[0133] All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.

[0134] As described above, one aspect of the present technology is to collect and use data from various sources to provide a comprehensive and complete window to the user's personal health record. The present disclosure contemplates that, in some instances, these collected data may include personally identifiable information (PII) data that uniquely identifies or can be used to contact or locate a specific person. Such personal information data may include demographic data, location-based data, phone numbers, email addresses, Twitter IDs, home addresses, data or records related to the user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, health record data, or any other identifying information or personal or health information.

[0135] The present disclosure recognizes that the use of such personal information data in the present invention technology can be used to benefit users. For example, personal information data can be used to enhance the user's experience with mapping services. In addition, the present disclosure also anticipates other uses of personal information data that benefit users.

[0136] The disclosure anticipates that entities responsible for the collection, analysis, disclosure, transmission, storage or other purposes of such personal information data will comply with sound privacy policies and / or privacy measures. Specifically, such entities should implement and adhere to the use of privacy policies and practices that are recognized as meeting or exceeding the industry or government requirements for maintaining the privacy and security of personal information data. Such policies should be easy for users to access and should be updated as changes in the collection and / or use of data occur. Personal information from users should be collected for legal and reasonable entity purposes and should not be shared or sold outside these legal purposes. In addition, such collection / sharing should be carried out after receiving the informed consent of the user. In addition, such entities should consider taking any necessary steps to protect and safeguard access to such personal information data, and ensure that other entities with access to personal information data comply with their privacy policies and procedures. In addition, such entities can subject themselves to third-party assessments to prove that they comply with widely accepted privacy policies and practices. In addition, policies and practices should be adapted to specific types of personal information data collected and / or accessed, and to applicable laws and standards including considerations of special jurisdictions. For example, in the United States, the collection or access of certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly. Therefore, different privacy practices for different types of personal data should be maintained in each country.

[0137] Regardless of the foregoing, the present disclosure also contemplates implementation schemes in which users selectively block the use or access of personal information data. That is, the present disclosure contemplates hardware elements and / or software elements to prevent or block access to such personal information data. For example, with respect to advertising delivery services or other services related to health record management, the technology of the present invention can be configured to allow users to choose to "opt in" or "opt out" to participate in the collection of personal information data at any time during or after registration for the service. In addition to providing "opt-in" and "opt-out" options, the present disclosure also contemplates providing notifications related to access or use of personal information. For example, a user may be notified that their personal information data will be accessed when downloading an application, and then reminded again just before the personal information data is accessed by the application.

[0138] In addition, it is the intention of the present disclosure that personal information data should be managed and processed in a manner that minimizes the risk of unintentional or unauthorized access or use. Once the data is no longer needed, the risk can be minimized by limiting the collection of data and deleting the data. In addition, and when applicable, including in certain health-related applications, data de-identification can be used to protect the privacy of users. Where appropriate, de-identification can be facilitated by removing specific identifiers (e.g., date of birth), controlling the amount or characteristics of stored data (e.g., collecting location data at the city level rather than the address level), controlling how the data is stored (e.g., aggregating data across users), and / or other methods.

[0139] Therefore, while the present disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, the present disclosure also contemplates that various embodiments may be implemented without access to such personal information data. That is, various embodiments of the present technology will not fail to function properly due to the lack of all or part of such personal information data.

Claims

1. A computer-implemented method, the computer-implemented method include: maintaining, by a user device, navigation to a first intermediate waypoint, the first intermediate waypoint corresponding to a multi-waypoint route on a map, the multi-waypoint route having one or more intermediate waypoints and a destination; determining, by the user equipment, whether the user equipment is within a zone corresponding to the first intermediate waypoint of the multi-waypoint route; responsive to determining that the user equipment is within the zone corresponding to the first intermediate waypoint, identifying a set of positions of the user equipment, each position in the set of positions being at least periodically identified by the user equipment; determining, by the user device, a set of weights for the locations, each weight in the set of weights corresponding to a location in the set of locations, and each weight being based at least in part on a time since a corresponding location was identified; determining, by the user device, a departure score based at least in part on the set of weights and the set of locations; The multi-way-point route on the map is updated based at least in part on the departure score. 2 . The method of claim 1 , wherein updating the multi-waypoint route comprises maintaining navigation to the first intermediate waypoint based at least in part on the departure score relative to a departure threshold.

3. The method of claim 1 , wherein updating the multi-waypoint route comprises advancing navigation from the first intermediate waypoint to a second intermediate waypoint based at least in part on the departure score relative to a departure threshold. 4 . The method of claim 1 , wherein updating the multi-waypoint route comprises advancing navigation from the first intermediate waypoint to the destination based at least in part on the departure score relative to a departure threshold. The method according to claim 1 , wherein the zone is a pre-arrival zone. The method of claim 5 , wherein the pre-arrival zone is based at least in part on a region having one or more region attributes. 7 . The method according to claim 6 , wherein the pre-arrival area includes an area having an area attribute of being a parking area associated with the first intermediate waypoint.

8. The method of claim 5, wherein the pre-arrival zone includes an area within a certain distance from the first intermediate waypoint.

9. The method of claim 5, wherein the pre-arrival zone comprises an area within a distance from an entrance associated with the first intermediate waypoint.

10. The method of claim 5, wherein the pre-arrival zone comprises an area within a distance from one or more entrances associated with the first intermediate waypoint.

11. The method of claim 5, wherein the pre-arrival zone comprises any combination of: an area within a distance from the first intermediate waypoint, an area within a distance from an entrance associated with the first intermediate waypoint, an area within a distance from one or more entrances associated with the first intermediate waypoint, and a parking area associated with the first intermediate waypoint.

12. The method of claim 1, wherein the departure score corresponds at least in part to a number of positions in the set of positions that are within the zone.

13. The method of claim 1, wherein the departure score corresponds, at least in part, to a ratio of a number of locations in the set of locations that are within the zone compared to a total number of locations in the set of locations.

14. The method of claim 1, wherein the departure score corresponds at least in part to a number of positions in the set of positions that are outside of the zone.

15. The method of claim 1, wherein the departure score corresponds at least in part to a distance of the location in the set of locations from the zone.

16. The method of claim 1, wherein the departure score corresponds at least in part to a distance of the location in the set of locations from the first intermediate waypoint.

17. The method of claim 1, wherein the departure score corresponds at least in part to a distance of the location in the set of locations from the first intermediate waypoint.

18. The method of claim 1, wherein the departure score corresponds at least in part to an auto-advancement tendency factor.

19. The method of claim 1, wherein the departure score corresponds at least in part to a number of detour routes to the first intermediate waypoint after the user equipment enters the zone.

20. The method of claim 1, wherein the departure score is calculated at least periodically.

21. The method of claim 1, wherein a period used to identify each location in the set of locations is one second.

22. The method of claim 1, wherein the set of positions is limited to a maximum number of positions, with the oldest position being replaced by the newest position.

23. A device, the device include: a memory configured to store computer-executable instructions; and A processor configured to access the memory and execute the computer executable instructions to at least perform the following operations: maintaining, by the device, navigation to a first intermediate waypoint, the first intermediate waypoint corresponding to a multi-waypoint route on a map, the multi-waypoint route having one or more intermediate waypoints and a destination; determining, by the device, whether the device is within a zone corresponding to the first intermediate waypoint of the multi-waypoint route; responsive to determining that the device is within the zone corresponding to the first intermediate waypoint, identifying a set of positions of the device, each position in the set of positions being at least periodically identified by the device; determining, by the device, a set of weights for the locations, each weight in the set of weights corresponding to a location in the set of locations, and each weight based at least in part on a time since the corresponding location was identified; determining, by the device, a departure score based at least in part on the set of weights and the set of positions; The multi-way-point route on the map is updated based at least in part on the departure score.

24. One or more non-transitory computer-readable media comprising computer-executable instructions that, when executed by one or more processors of a computer system, cause the computer system to perform operations comprising: maintaining, by a user device, navigation to a first intermediate waypoint, the first intermediate waypoint corresponding to a multi-waypoint route on a map, the multi-waypoint route having one or more intermediate waypoints and a destination; determining, by the user equipment, whether the user equipment is within a zone corresponding to the first intermediate waypoint of the multi-waypoint route; responsive to determining that the user equipment is within the zone corresponding to the first intermediate waypoint, identifying a set of positions of the user equipment, each position in the set of positions being at least periodically identified by the user equipment; determining, by the user device, a set of weights for the locations, each weight in the set of weights corresponding to a location in the set of locations, and each weight being based at least in part on a time since a corresponding location was identified; determining, by the user device, a departure score based at least in part on the set of weights and the set of locations; The multi-way-point route on the map is updated based at least in part on the departure score.

25. A computer-implemented method, the computer-implemented method include: receiving, by a computing device, a search query during presentation of a route associated with a map, the search query being configured for determining one or more associated locations on the map, and the route being configured with one or more sets of bounding boxes associated with points on the route; determining, by the computing device, a location on the map associated with the search query, the location being within a first set of the one or more sets of bounding boxes along the route; receiving, by the computing device, routing cost information associated with each of the locations from a routing server; generating, by the computing device, a distribution of the locations based at least in part on the routing cost information, the distribution configured to include a subset of the locations distributed over a threshold portion of the route; as well as At least a portion of the subset of the locations is displayed, by the computing device, on a user interface of the computing device according to the distribution. The method of claim 25 , wherein the threshold portion of the route corresponds to the entire route.

27. The method of claim 26, wherein the threshold portion of the route is divided into a set of segments.

28. The method of claim 27, wherein the position displayed on the user interface is determined based at least in part on having a position corresponding to each segment in the set of segments.

29. The method of claim 25, wherein the threshold portion of the route corresponds to a portion of the route that is closest to a navigation device.

30. The method of claim 25, wherein the threshold portion of the route corresponds to a portion of the route closest to a destination of the route.

31. The method of claim 25, wherein the threshold portion of the route corresponds to a portion of the route closest to an intermediate waypoint of the route.

32. The method of claim 25, wherein the threshold portion of the route corresponds to a portion of the route that is within a distance from a navigation device.

33. The method of claim 25, wherein the locations displayed on the user interface are categorized based at least in part on the routing cost information.

34. The method of claim 25, wherein the route is a multi-point route including one or more intermediate waypoints.

35. The method of claim 34, wherein the location on the map associated with the search query corresponds to a location between a location associated with a navigation device and a first intermediate waypoint of the one or more intermediate waypoints.

36. The method of claim 35, wherein the threshold portion of the route corresponds to a portion of the route between a navigation device and a first intermediate waypoint of the one or more intermediate waypoints.

37. The method of claim 25, wherein the locations on the map associated with the search query are further filtered based on context.

38. The method of claim 37, wherein the context includes mode of transportation.

39. The method of claim 37, wherein the context includes popularity of the location.

40. The method of claim 37, wherein context includes whether the location is open prior to an estimated arrival time based at least in part on the routing cost information associated with the location.

41. The method of claim 25, wherein the locations on the map associated with the search query are further filtered based on distance from the route.

42. A method according to claim 25, further comprising, in response to there being too few locations within a first set of bounding boxes, determining, by the computing device, locations on the map associated with the search query, the locations being within a second set of bounding boxes among the one or more sets of bounding boxes along the route, the second set of bounding boxes being larger than the first set of bounding boxes.

43. One or more non-transitory computer-readable media comprising computer-executable instructions that, when executed by one or more processors of a computer system, cause the computer system to perform operations comprising: receiving, by a computing device, a search query during presentation of a route associated with a map, the search query being configured for determining one or more associated locations on the map, and the route being configured with one or more sets of bounding boxes associated with points on the route; determining, by the computing device, a location on the map associated with the search query, the location being within a first set of the one or more sets of bounding boxes along the route; receiving, by the computing device, routing cost information associated with each of the locations from a routing server; generating, by the computing device, a distribution of the locations based at least in part on the routing cost information, the distribution configured to include a subset of the locations distributed over a threshold portion of the route; as well as At least a portion of the subset of the locations is displayed, by the computing device, on a user interface of the computing device according to the distribution.

44. A computerized system, the computerized system include: a memory configured to store computer-executable instructions; and A processor configured to access the memory and execute the computer executable instructions to at least perform the following operations: receiving a search query during presentation of a route associated with a map, the search query being configured for determining one or more associated locations on the map, and the route being configured with one or more sets of bounding boxes associated with points on the route; determining a location on the map associated with the search query, the location being within a first set of the one or more sets of bounding boxes along the route; receiving, from a routing server, routing cost information associated with each of the locations; generating a distribution of the locations based at least in part on the routing cost information, the distribution configured to include a subset of the locations distributed over a threshold portion of the route; as well as At least a portion of the subset of the locations is displayed on a user interface associated with the system according to the distribution.