admin管理员组

文章数量:1566223

其实现在在国内很多的开发人员可能会选择使用国内厂商的API来进行定位和相关的地图操作,比如百度、高德或者腾讯地图。而Google官方API的最大问题在于可能会受到网络限制,换句话说,你可能需要“梯子”。

一、配置和基础代码

第一步:获取权限

<!-- 获取GPS地理位置权限 --> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    
<!-- 获取	NET WORK地理位置权限 --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

第二步:在代码中定义一个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(){

    @Override
    public void onLocationChanged(Location location) {
	// TODO Auto-generated method stub
	//当位置发生变化时,你要做的事情
    }

    @Override
    public void onProviderDisabled(String provider) {
	// TODO Auto-generated method stub
	//当位置提供者(Provider)不可用时,你要做的事情
    }

    @Override
    public void onProviderEnabled(String provider) {
	// TODO Auto-generated method stub
	//当位置提供者(Provider)可用时,你要做的事情
    }

    @Override
    public 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);


本文标签: 官方全球GoogleAPI