定位的三种方式

1.wifi定位,ip地址定位,通过ip地址进行查询实际地址
2.基站定位,信号塔,基站:手机通讯服务的设备 ,信号的格数决定了手机距离基站远近,精确度:几十米到几公里,精确度来自于基站的数量


wifi定位和基站定位局限性:不能定位海拔
3.gps定位,通过和gps定位卫星通讯进行定位的,使用最少卫星实现全球定位,3颗,通过光波进行通讯,不需要联网,连接时间比较长,1分钟,比较费电,agps技术,通过联网来修正gps定位坐标,agps技术需要联网,gps不需要联网


#定位的具体代码# (了解整个流程)


百度sdk


android.permission.ACCESS_MOCK_LOCATION : 模拟位置的权限,模拟器中必须添加,真机可加可不加
android.permission.ACCESS_FINE_LOCATION :精确位置的权限,都必须添加
android.permission.ACCESS_COARSE_LOCATION : 大概位置的权限,都必须添加


passive : 被动,被动定位,基站定位
gps

模拟器不支持wifi定位


116.29118378
40.0433961


火星坐标
x=116.29727727828335, y=40.04466368740658


步骤
1.定位之前处理操作
//1.获取位置的管理者
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
//2.获取定位方式
//2.1获取所有的定位方式,true:表示返回所有可用定位方式
List<String> providers = locationManager.getProviders(true);
for (String string : providers) {
System.out.println(string);
}
//2.2获取最佳的定位方式
Criteria criteria = new Criteria();
criteria.setAltitudeRequired(true);//设置是否可以定位海拔,如果设置定位海拔,返回一定是gps
//criteria : 设置定位属性
//enabledOnly : true如果定位可用就返回
String bestProvider = locationManager.getBestProvider(criteria, true);
System.out.println("最佳的定位方式:"+bestProvider);
//3.定位
//provider : 定位的方式
//minTime : 定位的最小时间间隔
//minDistance : 定位最小的间隔距离
//LocationListener : 定位监听
locationManager.requestLocationUpdates(bestProvider, 0, 0, new MyLocationListener());
2.定位的监听
private class MyLocationListener implements LocationListener{
//当定位位置改变的调用的方法
//Location : 当前的位置
@Override
public void onLocationChanged(Location location) {
location.getAccuracy();//获取精确位置
location.getAltitude();//获取海拔
double latitude = location.getLatitude();//获取纬度,平行
double longitude = location.getLongitude();//获取经度,垂直
textview1.setText("longitude:"+longitude+"  latitude:"+latitude);
}
//当定位状态发生改变的时候调用的方式
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}
//当定位可用的时候调用的方法
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}
//当定位不可用的时候调用的方法
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

}
3.关闭gps
@Override
protected void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(myLocationListener);//关闭gps,但是高版本中规定打开和关闭gps必须由用户自己主观的去实现,代码已经不允许进行操作
}

你可能感兴趣的:(定位的三种方式)