Android NETWORK_PROVIDER如何将 cellid 和 lac 翻译成 lat long



我不确定这是否是收集此信息的正确论坛,请让我知道我会将其移至 android 论坛,以防这不是正确的位置。

我想了解当仅使用网络提供商时,如何将单元格 id 和 lac 转换为 lat 和 long。

理论1:我环顾四周,我知道有时会使用秘密 API——"http://www.google.com/glm/mmap"是一个非公共 API,用于将 cellLocation 转换为纬度和经度。

理论2:但也有理论认为,细胞三边测量也是为了确定经度和经度。当然,由于我们使用的是NETWORK_PROVIDER因此会有大约100-500m米的误差。

我想知道这两种理论中的哪一种被使用? 以及cell-ID和lac如何翻译成经纬度

我倾向于理论1。随着时间的推移,谷歌已经编制了一个完整的手机信号塔和Wifi接入点数据库。他们通过他们的地图API公开它们,这可能与他们在Android中为您提供位置的东西相同:https://developers.google.com/maps/documentation/business/geolocation/#cell_tower_object

我前段时间在移动运营商工作过。移动运营商(在俄罗斯)不提供有关其小区坐标的信息。当您将手机与 GPS 配合使用时,您的手机会收集有关最近手机的信息并将其发送给 Google。有了这些数据,谷歌计算每个单元格的坐标并存储它们。当您使用NETWORK_PROVIDER谷歌获取有关所有最近单元格的信息(获取cell-id,lac和信号强度)。利用这些数据,他们可以计算出您的坐标。

我认为这两种理论都是正确的。他们使用一些私有 API 来检索最近单元格的坐标,并使用三边测量(或其他类似的算法)来计算您的坐标。

好吧,实际上,两者都是有效的响应,我的意思是,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的位置服务,又向Google的位置服务提供信息,为了提供最佳位置,此机制不仅使用小区信号强度,还使用WiFi信息对位置进行三角测量。我会推荐这篇文章到开始使用Android位置:开始使用Android位置

实际上,

这也是辅助GPS(AGPS)背后的"魔力":在GPS设备中检索信息最慢的部分是寻找卫星,因为您必须寻找所有可用的卫星(30),因为您实际上不知道您的初始位置。使用AGPS,由于基于网络的位置,可以进行粗略的位置估计,然后,您可以显着限制卫星列表(仅限制估计位置可用的卫星),从而大大加快了该过程。

关于此的一些有趣的文章:Android位置提供商,手机跟踪,Android位置管理器类和Android位置策略

最新更新