首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有GPS,谷歌如何估计我的位置?

如果没有GPS,谷歌如何估计我的位置?
EN

Stack Overflow用户
提问于 2015-02-19 15:01:12
回答 2查看 3.4K关注 0票数 4

我想知道谷歌是怎么做到的。

当我的GPS被禁用时,可以很准确地找到我。

一开始我以为谷歌会从手机发射塔上获取信息,然后我才知道谷歌不会用我的手机发射塔和GPS来显示我的准确位置。

有人知道这是怎么回事吗?

EN

回答 2

Stack Overflow用户

发布于 2015-02-19 16:29:54

谷歌和其他公司,如苹果和Skyhook建立了一个数据库,将WLAN BSSID与地理位置联系起来。BSSID类似于由接入点广播的接入点的MAC地址。因此,如果启用了BSSID广播(这是大多数接入点的默认设置),则它是“公共可见的”。BSSID在作为IP堆栈的较低层上运行,您甚至不必连接到接入点即可接收这些广播。

每次您运行谷歌地图或导航与启用全球定位系统和WiFi,如果您的设备能够获得一个良好的全球定位系统修复,当前可见的无线局域网网络和您的当前位置(全球定位系统修复)被上传到谷歌,以建立和更新数据库。这种技术有时被称为众包。因此,每个Android设备都充当数据收集器。您可以阅读有关此here的更多信息。

由于大多数接入点在其位置上都是静态的,并且只覆盖很小的区域-覆盖半径约为100米-它们是在没有GPS的情况下很好地定位的理想锚点。

另一种定位计算机的方法是在geolocation databases中查找它的IP地址。然而,这在Android中没有使用,因为移动设备没有固定的位置。

票数 5
EN

Stack Overflow用户

发布于 2015-02-19 15:06:15

你要做的是使用LocationManager.NETWORK_PROVIDER而不是LocationManager.GPS_PROVIDER来获得这个职位。NETWORK_PROVIDER将在GSM或wifi上解析。显然,在关闭wifi的情况下,将使用GSM。请记住,使用蜂窝网络基本上可以精确到500米。

http://developer.android.com/guide/topics/location/obtaining-user-location.html有一些非常棒的信息和示例代码。

在完成OnCreate()中的大部分代码之后,添加以下代码:

代码语言:javascript
复制
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

您还可以让您的活动实现LocationListener类,从而在您的活动中实现onLocationChanged()

希望能对你有所帮助。

我已经从一些链接中引用和编码,但我不知道源链接。

如果你需要更多的帮助,请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28600387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档