使用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);



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部