Patent Publication Number: US-9426622-B2

Title: Determination of a location of a device based on information that identifies locations of other devices

Description:
BACKGROUND 
     Location-based services are a general class of services that use the geographical position of a device to control some features of the device. A device, such as a mobile device, may use location-based services in conjunction with a mobile network. Location-based services have a number of uses in mapping, social networking, entertainment, work, personal health, etc. Location-based services are becoming more important as the smart phone and tablet computer markets expand. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIGS. 1A and 1B  are diagrams of an overview of an example implementation described herein; 
         FIG. 2  is a diagram of an example environment in which systems and/or methods, described herein, may be implemented; 
         FIG. 3  is a diagram of example components of one or more devices of  FIG. 2 ; 
         FIG. 4  is a flow chart of an example process for determining a location of a device based on locations of other devices; and 
         FIGS. 5-7  are diagrams of example implementations relating to the example process shown in  FIG. 4 . 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The following detailed description of example implementations refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. 
     A device, such as a mobile device, may be taken to a particular location without being pre-programmed with information that identifies the particular location. The device&#39;s location may be useful for location-based services in a number of contexts, such as a social networking context, an emergency context (e.g., 911 services), a commercial context, or the like. The device may use a positioning system, such as a global positioning system (GPS), to determine the device&#39;s location. However, a GPS signal may be unavailable for determining the device&#39;s location in a particular location, such as an indoor location, a basement location, an urban location with many obstacles, or the like. Implementations described herein may facilitate determining the device&#39;s location based on information that identifies the locations of other devices within communication range of the device. 
       FIGS. 1A and 1B  are diagrams of an overview of an example implementation  100  described herein. Assume that example implementation  100  includes a positioning system (e.g., a global positioning system (GPS)); four anchor devices (e.g., a device that is within communication range of the positioning system and possesses information that identifies the anchor device&#39;s own location), shown as anchor device A, B, C, and D; two intermediate devices (e.g., a device that is not within communication range of the positioning system but is within communication range of three or more anchor devices), shown as intermediate devices E and F; and a target device (e.g., a device that is not within communication range of the positioning system and is within communication range of two or fewer anchor devices). Assume further that the anchor devices, the intermediate devices, and/or the target device can communicate via a network (e.g., a local area network (LAN), a long term evolution (LTE) network, etc.). 
     In example implementation  100 , assume that anchor devices A, B, C, and D are within communication range of the positioning system and possess information that identifies the locations of anchor devices A, B, C, and D. Further, assume that intermediate device E is within communication range of anchor devices A, B, and C, and assume that intermediate device F is within communication range of anchor devices A, B, and C. Further, assume that intermediate devices E and F are also each within communication range of the target device. Finally, assume that the target device is also within communication range of anchor device D. 
     As shown in  FIG. 1A , anchor devices A, B, C, and D may determine anchor device locations using information from the positioning system. Intermediate devices E and F may each receive an indication that anchor devices A, B, and C are within communication range. Intermediate devices E and F may each receive, from anchor devices A, B, and C, information that identifies anchor device locations of anchor device A, B, and C. Intermediate devices E and F may each determine a confidence level associated with a location of anchor device A, a confidence level associated with a location of anchor device B, and a confidence level associated with a location of anchor device C. The confidence levels may indicate a confidence in the accuracy of the anchor device locations. Based on the anchor device locations and/or the confidence levels associated with the anchor device locations, intermediate device E may determine an intermediate device location of intermediate device E and intermediate device F may determine an intermediate device location of intermediate device F. Intermediate devices E and F may each store information that identifies the intermediate device locations, and/or may provide the information that identifies the intermediate device locations. 
     As shown in  FIG. 1B , the target device may receive an indication, from intermediate devices E and F and anchor device D, indicating that intermediate devices E and F and anchor device D are within communication range of the target device. The target device may receive information that identifies locations of intermediate devices E and F, and a location of anchor device D. The target device may determine confidence levels associated with the locations of intermediate devices E and F, and the location of anchor device D. The confidence levels may indicate a confidence in the accuracy of the locations of intermediate devices E and F, and the location of anchor device D. A confidence level associated with anchor device D&#39;s location may be higher than confidence levels associated with intermediate devices E and F&#39;s locations because anchor device D&#39;s location is determined directly from information from the positioning system, while intermediate devices E and F&#39;s locations are determined indirectly from information from the positioning system. 
     Based on the information that identifies the locations of intermediate devices E and F and anchor device D and/or based on the confidence levels associated with the locations, the target device may determine the target device&#39;s location. The target device may store the information that identifies the target device&#39;s location and/or may provide the information that identifies the target device&#39;s location. In this way, a target device which lacks direct access to a positioning system signal may determine the target device&#39;s location based on the locations of other devices within communication range, and/or based on the confidence levels associated with the locations of other devices within communication range. The target device&#39;s location may be used to determine the location of other target devices or used in location based services in a number of contexts, such as a social networking context, an emergency context, a commercial context, or the like. 
       FIG. 2  is a diagram of an example environment  200  in which systems and/or methods, described herein, may be implemented. As shown in  FIG. 2 , environment  200  may include one or more anchor devices  210 - 1  through  210 -N(N≧1) (hereinafter referred to collectively as “anchor devices  210 ,” and individually as “anchor device  210 ”), one or more intermediate devices  220 - 1  through  220 -M (M≧1) (hereinafter referred to collectively as “intermediate devices  220 ,” and individually as “intermediate device  220 ”), a target device  230 , a positioning system  240 , a server device  250 , and a network  260 . Devices of environment  200  may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections. 
     Anchor device  210  may include one or more devices capable of receiving, generating, processing, storing, and/or providing information associated with a location of anchor device  210  (e.g., an anchor device location). For example, anchor device  210  may include a mobile phone (e.g., a smart phone), a base station, an access point, a radiotelephone, a video phone, a computer (e.g., a desktop computer, a laptop computer, a tablet computer, etc.), a video game console, a set-top box, or a similar type of device. In some implementations, anchor device  210  may include a device that is within communication range of positioning system  240 . In some implementations, anchor device  210  may receive, from positioning system  240 , information used to identify the anchor device location. 
     Intermediate device  220  may include one or more devices capable of receiving, generating, processing, storing, and/or providing information associated with a location of intermediate device  220  (e.g., an intermediate device location). For example, intermediate device  220  may include a mobile phone (e.g., a smart phone), a base station, an access point, a radiotelephone, a video phone, a computer (e.g., a desktop computer, a laptop computer, a tablet computer, etc.), a video game console, a set-top box, or a similar type of device. In some implementations, intermediate device  220  may include a device that is not within communication range of positioning system  240 . Additionally, or alternatively, intermediate device  220  may include a device that is within communication range of three or more anchor devices  210 . In some implementations, intermediate device  220  may receive, from three or more anchor devices  210 , information used to identify the intermediate device location. 
     Target device  230  may include one or more devices capable of receiving, generating, processing, storing, and/or providing information associated with a location of target device  230  (e.g., a target device location). For example, target device  230  may include a mobile phone (e.g., a smart phone), a base station, an access point, a radiotelephone, a video phone, a computer (e.g., a desktop computer, a laptop computer, a tablet computer, etc.), a video game console, a set-top box, or a similar type of device. In some implementations, target device  230  may include a device that is not within communication range of positioning system  240  and that is not within communication range of three or more anchor devices  210 . For example, target device  230  may include a device that is within communication range of one or more intermediate devices  220  and/or two or fewer anchor devices  210 . Although only one target device  230  is shown in environment  200 , there may be more than one target device  230  in some implementations. In some implementations, target device  230  may receive, from one or more intermediate devices  220  and/or two or fewer anchor devices  210 , information used to identify the target device location. 
     Positioning system  240  may include one or more devices capable of receiving, generating, processing, storing, and/or providing information associated with a location of a device (e.g., a device location). For example, positioning system  240  may include a GPS (e.g., a satellite-based GPS, a terrestrial-based GPS, etc.), a set of cell towers, or a similar type of device. Positioning system  240  may generate and/or provide, to anchor device  210 , information used to identify the anchor device location. 
     Server device  250  may include one or more devices capable of receiving, generating, processing, storing, and/or providing information associated with a device location. For example, server device  250  may include a network server device, a computer, a router, a switch, or the like. In some implementations, server device  250  may coordinate and/or carry out the receiving, generating, processing, storing, and/or providing of information concerning device locations of anchor device  210 , intermediate device  220 , and/or target device  230 . 
     Network  260  may include one or more wired and/or wireless networks. For example, network  260  may include a cellular network (e.g., a long term evolution (LTE) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a Wi-Fi network, a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., the Public Switched Telephone Network (PSTN)), a near field communication (NFC) network, a Bluetooth network, an ad hoc network, an intranet, the Internet, a fiber optic-based network, and/or a combination of these or other types of networks. 
     The number and arrangement of devices and networks shown in  FIG. 2  are provided as an example. In practice, there may be additional devices and/or networks, fewer devices and/or networks, different devices and/or networks, or differently arranged devices and/or networks than those shown in  FIG. 2 . Furthermore, two or more devices shown in  FIG. 2  may be implemented within a single device, or a single device shown in  FIG. 2  may be implemented as multiple, distributed devices. Additionally, or alternatively, a set of devices (e.g., one or more devices) of environment  200  may perform one or more functions described as being performed by another set of devices of environment  200 . 
       FIG. 3  is a diagram of example components of a device  300 . Device  300  may correspond to anchor device  210 , intermediate device  220 , target device  230 , positioning system  240 , and/or server device  250 . In some implementations, anchor device  210 , intermediate device  220 , target device  230 , positioning system  240 , and/or server device  250  may include one or more devices  300  and/or one or more components of device  300 . As shown in  FIG. 3 , device  300  may include a bus  310 , a processor  320 , a memory  330 , a storage component  340 , an input component  350 , an output component  360 , and a communication interface  370 . 
     Bus  310  may include a component that permits communication among the components of device  300 . Processor  320  may include a processor (e.g., a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), etc.), a microprocessor, and/or any processing component (e.g., a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), etc.) that interprets and/or executes instructions. Memory  330  may include a random access memory (RAM), a read only memory (ROM), and/or another type of dynamic or static storage device (e.g., a flash memory, a magnetic memory, an optical memory, etc.) that stores information and/or instructions for use by processor  320 . 
     Storage component  340  may store information and/or software related to the operation and use of device  300 . For example, storage component  340  may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, etc.), a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a cartridge, a magnetic tape, and/or another type of computer-readable medium, along with a corresponding drive. 
     Input component  350  may include a component that permits device  300  to receive information, such as via user input (e.g., a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, a microphone, etc.). Additionally, or alternatively, input component  350  may include a sensor for sensing information (e.g., a global positioning system (GPS) component, an accelerometer, a gyroscope, an actuator, etc.). Output component  360  may include a component that provides output information from device  300  (e.g., a display, a speaker, one or more light-emitting diodes (LEDs), etc.). 
     Communication interface  370  may include a transceiver-like component (e.g., a transceiver, a separate receiver and transmitter, etc.) that enables device  300  to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. Communication interface  370  may permit device  300  to receive information from another device and/or provide information to another device. For example, communication interface  370  may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, or the like. 
     Device  300  may perform one or more processes described herein. Device  300  may perform these processes in response to processor  320  executing software instructions stored by a computer-readable medium, such as memory  330  and/or storage component  340 . A computer-readable medium is defined herein as a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space spread across multiple physical storage devices. 
     Software instructions may be read into memory  330  and/or storage component  340  from another computer-readable medium or from another device via communication interface  370 . When executed, software instructions stored in memory  330  and/or storage component  340  may cause processor  320  to perform one or more processes described herein. Additionally, or alternatively, hardwired circuitry may be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software. 
     The number and arrangement of components shown in  FIG. 3  are provided as an example. In practice, device  300  may include additional components, fewer components, different components, or differently arranged components than those shown in  FIG. 3 . Additionally, or alternatively, a set of components (e.g., one or more components) of device  300  may perform one or more functions described as being performed by another set of components of device  300 . 
       FIG. 4  is a flow chart of an example process  400  for determining a location of a device based on locations of other devices. In some implementations, one or more process blocks of  FIG. 4  may be performed by server device  250 . Additionally, or alternatively, one or more process blocks of  FIG. 4  may be performed by another device or a group of devices separate from or including server device  250 , such as anchor device  210 , intermediate device  220 , target device  230 , and/or positioning system  240 . For example, target device  230  may perform one or more process blocks of process  400 , in some implementations. 
     As shown in  FIG. 4 , process  400  may include receiving an indication that one or more intermediate devices and/or two or fewer anchor devices are within communication range of a target device (block  410 ). For example, server device  250  may receive an indication that one or more intermediate devices are broadcasting a location tag. Additionally, or alternatively, server device  250  may receive an indication that two or fewer anchor devices are broadcasting a location tag. The location tag may include a device identifier that identifies the device broadcasting the location tag. Additionally, or alternatively the location tag may include an indication that the device possesses device location information. Anchor device  210  may be within communication range of positioning system  240  and may determine an anchor device location based on a communication with positioning system  240 . Intermediate device  220  may determine an intermediate device location based on information received from three or more other devices (e.g., anchor devices  210 ). Server device  250  may set up a connection between target device  230  and the one or more intermediate devices  220  and/or between target device  230  and the two or fewer anchor devices  210 . Additionally, or alternatively, target device  230  may provide an indication to server device  250  indicating the devices within communication range of target device  230 . 
     In the above-mentioned implementations, there are two or fewer anchor devices  210  because if there were three or more anchor devices  210 , target device  230  would have the status of an intermediate device  220 , which is a separate implementation. Implementations with many different combinations of devices are included in the phrase “one or more intermediate devices  220  and/or two or fewer anchor devices  210 .” For example, three intermediate devices  220  may be within communication range of target device  230 . Additionally, or alternatively, two intermediate devices  220  and one anchor device  210  may be within communication range of target device  230 . Additionally, or alternatively, one intermediate device  220  and two anchor devices  210  may be within communication range of target device  230 . Additionally, or alternatively, four or five intermediate devices  220  may be within communication range of target device  230 . The confidence level of the target device location of target device  230  may be higher when there are more anchor devices  210  within communication range of target device  230 , and may be lower when there are fewer anchor devices  210  within communication range of target device  230 . 
     In some implementations, one or more first target devices  230  and/or zero or more intermediate devices  220  may be within communication range of a second target device  230 . The location of the second target device  230  may be determined using the locations of three or more first target devices  230  and/or zero or more intermediate devices  220 . Additionally, or alternatively, the location of a set of third target devices  230  may be determined using the locations of three or more second target devices  230 . This process can go on in a chain of target devices  230 . 
     In some implementations, server device  250  may receive an indication of another device being within communication range of target device  230  based on a condition being satisfied. For example, server device  250  may receive an indication from intermediate device  220  if a user of intermediate device  220  has given permission to communicate with other devices. Additionally, or alternatively, server device  250  may receive an indication from intermediate device  220  if intermediate device  220  has a high confidence level associated with the intermediate device location (e.g., satisfies a threshold). Additionally, or alternatively, server device  250  may receive an indication from intermediate device  220  if target device  230  has communicated with intermediate device  220  in that geographical location or another geographical location in the past. 
     As further shown in  FIG. 4 , process  400  may include receiving location information that identifies a location of the one or more intermediate devices and/or the two or fewer anchor devices (block  420 ). For example, server device  250  may receive the location information (e.g., corresponding to an intermediate device location and/or an anchor device location, etc.). As an example, the location information may identify a geographic location, one or more location coordinates, or the like. Additionally, or alternatively, target device  230  may collect the location information and may broadcast the location information to server device  250 . 
     In some implementations, server device  250  may receive the location information in a synchronized fashion in order to increase energy efficiency in anchor devices  210 , intermediate devices  220 , and/or target devices  230 . For example, anchor device  210 , intermediate device  220 , and/or target device  230  may sleep (e.g., in a low power mode) and may wake up (e.g., in a high power mode) based on a synchronized schedule, such as every 20 seconds, every 30 seconds, every minute, or the like. During synchronization, anchor device  210 , intermediate device  220 , and/or target device  230  may provide and/or receive packets of information to communicate with one another and/or with server device  250  when in the high power mode. During synchronization, anchor device  210 , intermediate device  220 , and/or target device  230  may be engaged in a process involving updating one another and/or server device  250  regarding their locations every specified time period, such as every 20 seconds, every 30 seconds, every minute, or the like. In some implementations, the synchronization may occur on a network (e.g., network  260 ) which operates on a licensed band, such as an LTE network or another type of cellular network. A licensed band may allow better coordination between devices by allaying some concerns about user privacy. In some implementations, an LTE Direct network may be used for the synchronization because an LTE Direct network has a long range that is approximately 500 meters. Additionally, or alternatively, the synchronization may occur on another type of network (e.g., a WLAN, such as a WiFi network) 
     As further shown in  FIG. 4 , process  400  may include determining a confidence level associated with a location of the one or more intermediate devices and/or the two or fewer anchor devices (block  430 ). For example, server device  250  may determine a confidence level associated with one or more intermediate device locations and/or one or more anchor device locations. Additionally, or alternatively, target device  230  may determine the confidence levels, and may provide the confidence levels to server device  250 . 
     In some implementations, the confidence level associated with the anchor device locations may be high (e.g., relative to intermediate device locations and target device locations) because the anchor device locations are based on a signal directly from positioning system  240 . In contrast, the confidence level associated with the intermediate device locations may be medium (e.g., lower than anchor device locations but higher than target device locations) because the intermediate device locations are based on receiving information from three or more anchor device locations, and thus, indirectly from positioning system  240 . Similarly, the confidence level associated with the target device locations may be low (e.g., relative to the anchor device locations and the intermediate device locations) because the target device locations are based on the intermediate device locations and/or the anchor device locations. 
     In some implementations, the confidence level may be represented using a string (e.g., “anchor device,” “intermediate device,” “low,” “medium,” “high,” etc.), a number (e.g., 55%, 0.55, etc.), a combination of a string and a number (e.g., “anchor device 55%,” “intermediate device based on 6 anchor devices at 55%,” etc.), or the like. 
     The confidence level may be determined based on a quantity of devices from which location information is received. For example, an intermediate device location determined from five anchor device locations may have a higher confidence level than an intermediate device location determined from three anchor device locations. Additionally, or alternatively, the confidence level may be determined based on a distance to the devices from which location information is received. For example, the confidence level of a target device  230  which is 100 meters away from three intermediate devices  220  will be higher than the confidence level of a target device  230  which is 200 meters away from three intermediate devices  220 . Additionally, or alternatively, the confidence level may be determined based on an amount of time that has elapsed since a last communication with the devices from which location information is received (e.g., a target device  230  which has more recently communicated with intermediate devices  220  may have a higher confidence level). Additionally or alternatively, the confidence level may be determined based on a speed and/or direction of the movement of the devices from which location information is received. 
     In some implementations, anchor devices  210 , intermediate devices  220 , and/or target devices  230  may change location and/or change the confidence level associated with a location. For example, target device  230  may move closer to anchor devices  210  and may enter communication range of three or more anchor devices  210 . In this case, there may be a change in the information that identifies target device location, and/or the confidence level associated with the target device location. The confidence level may increase because target device  230  now has the status of intermediate device  220 , since target device  230  is now in communication with three or more anchor devices  210 . 
     As further shown in  FIG. 4 , process  400  may include determining a target device location based on the location information and/or based on the confidence levels (block  440 ). For example, server device  250  may determine the target device location based on the location information and/or based on the confidence levels associated with the intermediate device locations and/or the anchor device locations. In some implementations, server device  250  may determine a relative position of target device  230  in relation to the intermediate device location(s) and/or in relation to the anchor device location(s). Server device  250  may determine the target device location based on an algorithm that incorporates the relative positions, the location information, and/or the confidence levels. Additionally, or alternatively, target device  230  may determine the target device location, and may provide information relating to the target device location to server device  250 . 
     In some implementations, the confidence levels of the devices providing location information may be used as weighting factors. For example, the location of an anchor device  210  with a high confidence level may be assigned a higher weight determining the target device location than the location of an intermediate device  220  with a low confidence level. 
     In some implementations, server device  250  may determine the target device location based on a received signal strength (RSS) by measuring physical waveforms of packets sent between target device  230  and intermediate devices  220  and/or between target device  230  and anchor device  210 . Measuring the physical waveforms of the packets may involve analyzing characteristics of electromagnetic waves moving between devices. Additionally, or alternatively, server device  250  may use the RSS by measuring the physical waveforms of the packets sent between target device  230  and some other part of network  260 . Additionally, or alternatively, server device  250  may use the RSS by measuring the physical waveforms of the packets sent between intermediate device  220  and some other part of network  260 , and/or anchor device  210  and some other part of network  260 . 
     In some implementations, server device  250  may determine the target device location based on triangulation, multi-angulation, trilateration, multi-lateration, or the like. Triangulation of the target device location may require information identifying a location of at least three other devices, such as intermediate device  220  and/or anchor device  210 . Additionally, or alternatively, server device  250  may determine the target device location based on a least square algorithm, a maximum likelihood algorithm, or the like. The algorithm used may be an algorithm that may depend upon whether intermediate device  220  and/or anchor device  210  are located in a city setting, an open field setting, inside a building, or the like. Additionally, or alternatively, the algorithm used may depend upon the type of network  260 , such as whether network  260  is an LTE network, a 3G network, or the like. Additionally, or alternatively, the algorithm used may depend upon the type of anchor device  210 , the type of intermediate device  220 , the type of target device  230 , the type of positioning system  240 , the type of server device  250 , or the like. For example, the algorithm may depend upon whether intermediate device  220  is a mobile device or a stationary device. 
     As further shown in  FIG. 4 , process  400  may include providing or storing information that identifies the target device location (block  450 ). For example, server device  250  may provide information that identifies the target device location to target device  230 , to another target device  230 , to intermediate device  220 , to anchor device  210 , to positioning system  240 , or the like. Additionally, or alternatively, server device  250  may store information that identifies the target device location. Target device  230 &#39;s location may be used to determine the location of other target devices  230  or may be used in location based services in a number of contexts, such as a social networking context, an emergency context, a commercial context, or the like. 
     In some implementations, target device  230  may receive information using a “pull” approach, without server device  250  acting as a coordinator. A pull approach may include target device  230  extracting, requesting, and/or retrieving information from the one or more intermediate devices  220 , the two or fewer anchor devices  210 , and/or server device  250 . 
     Additionally, or alternatively, the one or more intermediate devices  220  and/or the two or fewer anchor devices  210  may provide information to target device  230  using a “push” approach, without server device  250  acting as a coordinator. A push approach may include the one or more intermediate devices  220 , the two or fewer anchor devices  210 , and/or server device  250  sending or broadcasting information to target device  230  and/or server device  250 . 
     Additionally, or alternatively, target device  230  may determine target device location and provide it to other target devices  230 , without server  250  acting as a coordinator. Additionally, or alternatively, target devices  230  may extract or collect target device location from another target device  230 , without server  250  acting as a coordinator. 
     Although  FIG. 4  shows example blocks of process  400 , in some implementations, process  400  may include additional blocks, fewer blocks, different blocks, or differently arranged blocks than those depicted in  FIG. 4 . Additionally, or alternatively, two or more of the blocks of process  400  may be performed in parallel. 
       FIG. 5  is a diagram of an example implementation  500  relating to example process  400  shown in  FIG. 4 .  FIG. 5  shows an example of determining a location of a device based on locations of other devices. 
     As shown in  FIG. 5 , assume that example implementation  500  includes a target device, an intermediate device, and anchor devices A, B, C, D, and E. Assume further that anchor devices A, B, C, D, and E are within communication range of positioning system  240  and each possess information that identifies an anchor device location of a corresponding anchor device. As further shown in  FIG. 5 , assume that anchor devices A, B, and C are located outside of a building and within communication range of the intermediate device, which is located inside of the building. As further shown in  FIG. 5 , assume that anchor devices D and E are located outside of the building and within communication range of the target device. As further shown in  FIG. 5 , assume that the intermediate device is also within communication range of the target device, which is located inside of the building. 
     Assume that the intermediate device receives an indication that anchor devices A, B, and C are within communication range of the intermediate device. The intermediate device may receive information that identifies the anchor device locations of anchor devices A, B, and C. The intermediate device may determine a confidence level associated with each anchor device location. As shown by reference number  510 , assume that the confidence level of anchor device A&#39;s location is 95%, the confidence level of anchor device B&#39;s location is 92%, and the confidence level of anchor device C&#39;s location is 90%. The intermediate device may determine an intermediate device location corresponding to the intermediate device based on the anchor device locations and/or based on the confidence level associated with each anchor device location. 
     Assume that the target device receives an indication that the intermediate device is within communication range of the target device. The target device may receive information that identifies the intermediate device location from the intermediate device. The target device may determine the confidence level associated with the intermediate device location. As shown by reference number  520 , assume that the confidence level of the intermediate device&#39;s location is 61%. The confidence level is lower than the confidence level of the anchor device locations because the information used to determine the intermediate device location does not come directly from positioning system  240 . 
     Assume that the target device receives an indication that anchor devices D and E are within communication range of the target device. The target device may receive information that identifies the anchor device locations of anchor devices D and E. The target device may determine the confidence level associated with each anchor device location. As shown by reference number  530 , assume that the confidence level of anchor device D&#39;s location is 95% and the confidence level of anchor device E&#39;s location is 73%. 
     As shown, the target device may determine the target device location based on the information that identifies the anchor device locations, the information that identifies the intermediate device location, and/or the confidence levels associated with the anchor device locations and the intermediate device location. The target device may provide and/or store the information that identifies the target device location. As shown by reference number  540 , assume that the confidence level associated with the target device location is 38%. 
     The target device location and the confidence level associated with the target device location may be used for location based services, such as a mapping service, a gaming service, or the like. The type of location based services that can be used may depend upon whether the confidence level associated with the target device location satisfies a threshold. For example, if the confidence level associated with the target device location is greater than a first threshold (e.g., 35%), the target device location may be used for a gaming service (e.g., a game that uses target device locations from participating devices). In some implementations, if the confidence level is greater than a second threshold (e.g., 65%), the target device location may be used for a second service, such as an advertising service that provides advertisements based on the target device location. 
     As indicated above,  FIG. 5  is provided merely as an example. Other examples are possible and may differ from what was described with regard to  FIG. 5 . 
       FIG. 6  is a diagram of an example implementation  600  relating to example process  400  shown in  FIG. 4 .  FIG. 6  shows an example of determining a location of a device using a server device  250  to coordinate between anchor devices, intermediate devices, and a target device. 
     As shown in  FIG. 6 , assume that example implementation  600  includes server device  250 , a target device, intermediate devices A and B, and anchor devices A, B, C, and D. Assume further that anchor devices A, B, C, and D are within communication range of positioning system  240  and each possesses information identifying an anchor device location of a corresponding anchor device. As further shown in  FIG. 6 , assume that anchor devices A, B, and C are located outside of a building but within communication range of intermediate devices A and B, which are located inside of the building. As further shown in  FIG. 6 , assume that anchor device D is located outside of the building and within communication range of the target device. As further shown in  FIG. 6 , assume that intermediate devices A and B are within communication range of the target device, which is located inside of the building. As further shown in  FIG. 6 , assume that server device  250  is in communication with anchor devices A, B, C, and D, intermediate devices A and B, and the target device. 
     Assume that server device  250  receives an indication that anchor devices A, B, and C are within communication range of intermediate devices A and B. Server device  250  may receive information that identifies the anchor devices within communication range of intermediate devices A and B. Server device  250  may determine a confidence level associated with an anchor device location. As shown by reference number  610 , assume that the confidence level of anchor device A&#39;s location is 88%, the confidence level of anchor device B&#39;s location is 88%, and the confidence level of anchor device C&#39;s location is 85%. Server device  250  may determine a location of intermediate devices A and B based on the anchor device locations of anchor device A, B, and C, and/or based on the confidence levels associated with the anchor device locations. 
     Assume further that server device  250  receives an indication that intermediate devices A and B are within communication range of the target device. Server device  250  may receive information that identifies the intermediate device locations of intermediate devices A and B. Server device  250  may determine a confidence level associated with an intermediate device location. As shown by reference number  620 , assume that the confidence level of intermediate device A&#39;s location is 45% and the confidence level of intermediate device B&#39;s location is 57%. The confidence level of an intermediate device location is lower than the confidence level of an anchor device location because the intermediate device location is determined indirectly from information from positioning system  240 . 
     Assume that server device  250  receives an indication that anchor device D is within communication range of the target device. Server device  250  may receive information identifying an anchor device location of anchor device D. Server device  250  may determine the confidence level associated with the anchor device location. As shown by reference number  630 , assume that the confidence level of anchor device D&#39;s location is 91%. 
     As shown, server device  250  may determine the target device location based on the anchor device location of anchor device D and the intermediate device location of intermediate devices A and B, and/or based on the confidence levels associated with the anchor device location and the intermediate device locations. Server device  250  may provide information that identifies the target device location to the target device and/or store the information that identifies the target device location. As shown by reference number  640 , assume that the confidence level associated with the target device location is 28%. The target device location and the confidence level associated with the target device location may be used to determine the location of other target devices and/or may be used in location based services in a number of contexts, such as a social networking context, a 911 emergency context, or a commercial context. 
     As indicated above,  FIG. 6  is provided merely as an example. Other examples are possible and may differ from what was described with regard to  FIG. 6 . 
       FIG. 7  is a diagram of an example implementation  700  relating to example process  400  shown in  FIG. 4 .  FIG. 7  shows an example of determining a location of a target device using other target devices. 
     As shown in  FIG. 7 , assume that example implementation  700  includes anchor devices A, B, and C, intermediate devices A, B, and C, and target devices A, B, C, and D. Assume further that anchor devices A, B, and C are within communication range of positioning system  240  and each possess information that identifies anchor device locations corresponding to anchor devices A, B, and C. As further shown in  FIG. 7 , assume that anchor devices A, B, and C are located outside of a building and within communication range of intermediate devices A, B, and C, which are located inside of the building. As further shown in  FIG. 7 , assume that intermediate devices A, B, and C are within communication range of target devices A, B, and C, which are located further inside of the building. As further shown in  FIG. 7 , assume that target devices A, B, and C are within communication range of target device D, which is located still further inside of the building. 
     Assume that intermediate devices A, B, and C receive indications that anchor devices A, B, and C are within communication range. Intermediate devices A, B, and C may receive information that identifies the anchor device locations of the anchor devices within communication range. Intermediate devices A, B, and C may determine the confidence level associated with each anchor device location. As shown by reference number  710 , assume that the confidence level of anchor device A&#39;s location is 88%, the confidence level of anchor device B&#39;s location is 88%, and the confidence level of anchor device C&#39;s location is 88%. Intermediate devices A, B, and C may each determine an intermediate device location based on the anchor device locations and/or based on the confidence level associated with each anchor device location. 
     Assume that target devices A, B, and C receive indications that intermediate devices A, B, and C are within communication range of target devices A, B, and C. Target devices A, B, and C may each receive information that identifies the intermediate device locations of intermediate devices A, B, and C. Target devices A, B, and C may determine the confidence level associated with each intermediate device location. As shown by reference number  720 , assume that the confidence level of intermediate device A&#39;s location is 47%, the confidence level of intermediate device B&#39;s location is 57%, and the confidence level of intermediate device C&#39;s location is 49%. The confidence levels are lower than the confidence levels of the anchor device locations because information used to determine the intermediate device locations does not come directly from positioning system  240 . 
     As shown, the target devices A, B, and C may each determine a target device location based on the intermediate device locations and/or based on the confidence level associated with the intermediate device locations. The target devices A, B, and C may provide and/or store the information that identifies the target device locations of target devices A, B, and C. 
     Assume further that target device D receives an indication that target devices A, B, and C are within communication range of target device D. Target device D may receive information that identifies the target device locations of target device A, B, and C. Target device D may determine the confidence level associated with each target device location. As shown by reference number  730 , assume that the confidence level of target device A&#39;s location is 21%, the confidence level of target device B&#39;s location is 22%, and the confidence level of target device C&#39;s location is 30%. 
     As shown, target device D may determine a target device location of target device D based on the information that identifies the target device locations of target devices A, B, and C, and/or based on the confidence level associated with the target device locations. Target device D may provide and/or store the information that identifies the target device location of target device D. As shown by reference number  740 , assume that the confidence level of target device D&#39;s location is 15%. The confidence level of target device D&#39;s location is lower than the confidence levels of target device A, B, and C&#39;s locations because target device D&#39;s location is based on other target devices and not on intermediate devices. 
     Target device D&#39;s location and the confidence level associated with target device D&#39;s location may be used to determine the location of other target devices and/or may be used in location based services in a number of contexts, such as a social networking context, an emergency context, or the like. For example, target device  230  may provide the confidence level to server device  250 , and server device  250  may perform an action, associated with a location based service, based on the confidence level (e.g., may provide a service based on the confidence level, may provide a service in different manners based on different confidence levels, etc.). 
     As indicated above,  FIG. 7  is provided merely as an example. Other examples are possible and may differ from what was described with regard to  FIG. 7 . 
     Implementations described herein may facilitate determining a location of a target device which is not within range of a positioning system, based on the locations of other devices within communication range of the target device, and/or based on the confidence levels associated with the locations. 
     The foregoing disclosure provides illustration and description, but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations. 
     As used herein, the term component is intended to be broadly construed as hardware, firmware, or a combination of hardware and software. 
     Some implementations are described herein in connection with thresholds. As used herein, satisfying a threshold may refer to a value being greater than the threshold, more than the threshold, higher than the threshold, greater than or equal to the threshold, less than the threshold, fewer than the threshold, lower than the threshold, less than or equal to the threshold, equal to the threshold, etc. 
     To the extent the aforementioned embodiments collect, store, or employ personal information provided by individuals, it should be understood that such information shall be used in accordance with all applicable laws concerning protection of personal information. Additionally, the collection, storage, and use of such information may be subject to consent of the individual to such activity, for example, through well known “opt-in” or “opt-out” processes as may be appropriate for the situation and type of information. Storage and use of personal information may be in an appropriately secure manner reflective of the type of information, for example, through various encryption and anonymization techniques for particularly sensitive information. 
     It will be apparent that systems and/or methods, described herein, may be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and/or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and/or methods were described herein without reference to specific software code—it being understood that software and hardware can be designed to implement the systems and/or methods based on the description herein. 
     Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes each dependent claim in combination with every other claim in the claim set. 
     No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” are intended to include one or more items, and may be used interchangeably with “one or more.” Furthermore, as used herein, the term “set” is intended to include one or more items, and may be used interchangeably with “one or more.” Where only one item is intended, the term “one” or similar language is used. Also, as used herein, the terms “has,” “have,” “having,” or the like are intended to be open-ended terms. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.