写的是关于百度地图的地位:
根据百度官网给出的代码,放回具体的位置和参数:
在android studio中 使用定位需要先去百度 的api中注册key 密钥(具体参考百度)
在配置文件中配置key 并配置权限去访问网络
public class MainActivity extends Activity { private TextView mTv = null; private Button btnStart; private String mData; public LocationClient mLocationClient = null; public BDLocationListener myListener = new MyLocationListener(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类 mLocationClient.registerLocationListener(myListener); //注册监听函数 mTv = (TextView)findViewById(R.id.textView1); btnStart = (Button)findViewById(R.id.button1); btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mLocationClient.start(); InitLocation(); } }); } public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { //Receive Location StringBuffer sb = new StringBuffer(256); sb.append("time : "); sb.append(location.getTime()); sb.append("\nerror code : "); sb.append(location.getLocType()); sb.append("\nlatitude : "); sb.append(location.getLatitude()); sb.append("\nlontitude : "); sb.append(location.getLongitude()); sb.append("\nradius : "); sb.append(location.getRadius()); if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果 sb.append("\nspeed : "); sb.append(location.getSpeed());// 单位:公里每小时 sb.append("\nsatellite : "); sb.append(location.getSatelliteNumber()); sb.append("\nheight : "); sb.append(location.getAltitude());// 单位:米 sb.append("\ndirection : "); sb.append(location.getDirection());// 单位度 sb.append("\naddr : "); sb.append(location.getAddrStr()); sb.append("\ndescribe : "); sb.append("gps定位成功"); sb.append(location.getAddrStr());//获得当前地址 sb.append(location.getDirection());//获得方位 } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果 sb.append("\naddr : "); sb.append(location.getAddrStr());//获得当前地址 //运营商信息 sb.append("\noperationers : "); sb.append(location.getOperators()); sb.append("\ndescribe : "); sb.append("网络定位成功"); } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果 sb.append("\ndescribe : "); sb.append("离线定位成功,离线定位结果也是有效的"); } else if (location.getLocType() == BDLocation.TypeServerError) { sb.append("\ndescribe : "); sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因"); } else if (location.getLocType() == BDLocation.TypeNetWorkException) { sb.append("\ndescribe : "); sb.append("网络不同导致定位失败,请检查网络是否通畅"); } else if (location.getLocType() == BDLocation.TypeCriteriaException) { sb.append("\ndescribe : "); sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机"); } sb.append("\nlocationdescribe : "); logMsg(sb.toString()); sb.append(location.getLocationDescribe());// 位置语义化信息 List<Poi> list = location.getPoiList();// POI数据 if (list != null) { sb.append("\npoilist size = : "); sb.append(list.size()); for (Poi p : list) { sb.append("\npoi= : "); sb.append(p.getId() + " " + p.getName() + " " + p.getRank()); } } Log.i("BaiduLocationApiDem", sb.toString()); } } public void logMsg(String str) { try { mData = str; if ( mTv != null ) mTv.setText(mData); } catch (Exception e) { e.printStackTrace(); } } private void InitLocation(){ LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置高精度定位定位模式 option.setCoorType("bd09ll");//设置百度经纬度坐标系格式 option.setScanSpan(1000);//设置发起定位请求的间隔时间为1000ms option.setIsNeedAddress(true);//反编译获得具体位置,只有网络定位才可以 mLocationClient.setLocOption(option); } }
logmsg 转换成文字显示
initlocation 地址的反编译 如果不使用具体的位置放回为空!