我正在学习google maps api v2,现在我正在阅读关于Location API
的内容,文档中说它将client
连接到Service
:
位置服务通过
location client,它是location services类的一个实例
地点客户。所有的位置信息请求都要经过这个过程
客户。
这是否意味着谷歌将获得我的应用程序所在的所有位置?我知道谷歌地图可以在离线模式下工作,如果地图已经下载,但定位服务是否只有在线功能?
我需要在我的应用程序中控制互联网流量,所以问题就来了。
最佳答案
工作方式:
方法1:细胞塔三角测量(使用移动数据)
这种方式使用您的服务提供商网络连接来确定您的位置。返回的经度和纬度绝对不是最精确的,但是,它们以10-15%的精度(以我的经验)让你得到。
下面是一段说明这一点的代码(直接从android网站获取)
// 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);
方式二:无线连接。必须在线。
这种方法比以前的方法准确得多。但是缺点是你必须在线并且连接到互联网。此方法使用的理论与您在任何web浏览器上找到的javascript版本的google地图相同。此方法返回的经度和纬度几乎是精确的。
方法三:全球定位系统。(脱机)
全球定位系统是最精确的,它只在户外工作,它很快消耗电池电量,而且没有用户想要的那么快返回位置。然而,全球定位系统不需要连接到互联网或移动数据。它通过向公共卫星发出请求来获取你的位置。
这是你需要的两个功能。getLatitude() and getLongitude().
记住这些都是有趣的东西。但是google maps api v2有一个简单的function
mMap.setMyLocationEnabled(true)
;考虑到所有三种可能都无法找到你的位置。