我不确定这是否是收集此信息的正确论坛,请让我知道如果这不是正确的地方我将把它移到Android论坛。
我想了解当仅使用网络提供商时,如何将cell id和lac转换为lat和long。
理论1: 我查了一下,我知道有时会使用秘密API - “http://www.google.com/glm/mmap”是一个非公共API,可以将cellLocation转换为纬度和经度。
理论2: 但也有理论认为,细胞三边测量也是为了确定纬度和长度而进行的。当然,因为我们使用的是NETWORK_PROVIDER,所以会出现大约100-500米的误差。
我想知道这两种理论中的哪一种被使用?以及cell-id和lac如何转换为lat long
答案 0 :(得分:3)
我倾向于理论1.谷歌已经编制了一个完整的手机信号塔和Wifi接入点数据库。他们通过他们的地图API公开他们,这可能与他们在Android中用来为您提供位置的内容相同:https://developers.google.com/maps/documentation/business/geolocation/#cell_tower_object
答案 1 :(得分:3)
前段时间我曾在移动运营商工作过。移动运营商(在俄罗斯)不提供有关其小区坐标的信息。 当您将手机与GPS一起使用时,您的手机会收集有关最近的手机的信息并将其发送给谷歌。利用这些数据,谷歌计算每个细胞的坐标并存储它们。 当您使用NETWORK_PROVIDER时,Google会获取有关所有最近单元格的信息(获取cell-id,lac和信号强度)。通过这些数据,他们可以计算出您的坐标。
我认为这两种理论都是正确的。他们使用一些私人api来检索最近细胞的坐标并使用trilateration(或其他类似的算法)来计算你的坐标。
答案 2 :(得分:0)
嗯,实际上,两者都是有效的回复,我的意思是,Android提供了3种类型的位置提供商:
GPS_PROVIDER: This provider determines location using satellites. Depending on
conditions, this provider may take a while to return a location fix.
NETWORK_PROVIDER: This provider determines location based on availability of cell
tower and WiFi access points. Results are retrieved by means of
a network lookup.
PASSIVE_PROVIDER: This provider can be used to passively receive location updates
when other applications or services request them without
actually requesting the locations yourself. This provider will
return locations generated by other providers.
当您选择网络位置提供商时,您既可以访问并向Google的位置服务提供信息,又为了提供最佳位置,此机制不仅使用Cell信号强度,还使用WiFi信息对位置进行三角测量。我建议您开始使用此帖子开始使用Android位置:Getting Started With Android Location
实际上,这也是辅助GPS(AGPS)背后的“魔力”:在GPS设备中检索信息的最慢部分是寻找卫星,因为你要寻找所有可用的卫星(30),因为你实际上没有知道你的初始位置。通过AGPS,通过基于网络的位置可以获得粗略的位置估计,然后,您可以显着限制您的卫星列表(仅限于您估计位置的可用卫星),从而大大加快了这一过程。
一些有趣的文章:Android Location Providers,Mobile Phone Tracking,Android Location Manager class和Android Location Strategies