使用Google官方API进行全球定位
其实现在在国内很多的开发人员可能会选择使用国内厂商的API来进行定位和相关的地图操作,比如百度、高德或者腾讯地图。而Google官方API的最大问题在于可能会受到网络限制,换句话说,你可能需要“梯子”。
一、配置和基础代码
第一步:获取权限
第二步:在代码中定义一个LocationManager类的实例:
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
第三步:定制定位算法的一些参数:
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); //设置为最大精度
criteria.setAltitudeRequired(false); //不要求海拔信息
criteria.setCostAllowed(false); //是否允许付费
criteria.setPowerRequirement(Criteria.POWER_LOW); //对电量的要求
criteria.setBearingRequired(false); //不要求Bearing信息(类似地轴线的东西)String bestProvider = locationManager.getBestProvider(criteria, false);
第四步:获取经纬度:
Location location = locationManager.getLastKnownLocation(bestProvider);double latitude = location.getLatitude(); //经度
double longitude = location.getLongitude(); //纬度
double altitude = location.getAltitude(); //海拔
二、监听器
因为在定位的应用场景中,很多时候手机(或者其它设备)的位置是会一直变化的,例如在汽车上,或是在路上行走。所以需要一个监听器来监听全球定位的位置的实时变化。
第一步:创建监听器实例,并重载它的方法:
LocationListener locationListener = new LocationListener(){@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub//当位置发生变化时,你要做的事情}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub//当位置提供者(Provider)不可用时,你要做的事情}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub//当位置提供者(Provider)可用时,你要做的事情}@Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {// TODO Auto-generated method stub//当状态发生变化时,你要做的事情}
};第二步:在LocationManager的实例里注册该监听器:
locationManager.requestLocationUpdates(bestProvider, 1000, 0, locationListener);上述代码中的“1000”是监听器的监听间隔时间
如果直接使用Activity自身来实现监听器的话,那么在注册时可以使用this关键字:
locationManager.requestLocationUpdates(bestProvider, 1000, 0, this);
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
