2

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

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

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

理论 2:但也有理论认为,为了确定纬度和经度,也执行单元格三边测量。当然,由于我们使用的是 NETWORK_PROVIDER,所以会有大约 100-500 米的误差。

我想知道这两种理论中的哪一种被使用了?以及如何将 cell-id 和 lac 翻译成 lat long

4

3 回答 3

3

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

于 2013-11-05T06:58:53.477 回答
3

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

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

于 2013-11-11T14:12:57.213 回答
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.

当您选择 Network Location Provider 时,您既可以访问 Google 的位置服务并向其提供信息,并且为了提供最佳位置,该机制不仅使用 Cell 信号强度,而且还使用 WiFi 信息来三角定位位置。我会推荐这篇文章来开始使用 Android 位置:Android 位置入门

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

一些有趣的文章:Android Location Providers , Mobile Phone Tracking , Android Location Manager classAndroid Location Strategies

于 2013-11-15T09:49:59.817 回答