public void getUserLocation() { BDLocationListener listener = new MyLocationListener(); locationClient = new LocationClient(MyApplication.getContext()); initLocation(); locationClient.registerLocationListener(listener); locationClient.start(); }
@Override public void onReceiveLocation(BDLocation bdLocation) { locType = bdLocation.getLocType(); if (locType == BDLocation.TypeGpsLocation || locType == BDLocation.TypeNetWorkLocation) { city = bdLocation.getCity(); district = bdLocation.getDistrict(); if (TextUtils.isEmpty(city)) { return; } if (city.contains("自治区") || city.contains("自治县")) { city = city.replace("自治区", ""); city = city.replace("自治县", ""); } else { city = city.substring(0, city.length() - 1); } if (district.contains("自治区") || district.contains("自治县")) { district = district.replace("自治区", ""); } else { district = district.substring(0, district.length() - 1); } LocationCityId locationCityId = new LocationCityId(); locationCityId.getLocationCityId( city, district, new LocationCallBack() { @Override public void onFinish(String return_id, String city_name) { if (mLocationListener != null) { mLocationListener.onLocated(return_id, city_name); } } @Override public void onError() {} }); Log.d("City", city); Log.d("District", district); } else { Toast.makeText(MyApplication.getContext(), "定位失败...", Toast.LENGTH_SHORT).show(); } locationClient.stop(); /*StringBuffer sb = new StringBuffer(256); sb.append("time : "); sb.append(bdLocation.getTime()); sb.append("\nerror code : "); sb.append(bdLocation.getLocType()); sb.append("\nlatitude : "); sb.append(bdLocation.getLatitude()); sb.append("\nlontitude : "); sb.append(bdLocation.getLongitude()); sb.append("\nradius : "); sb.append(bdLocation.getRadius()); if (bdLocation.getLocType() == BDLocation.TypeGpsLocation){// GPS定位结果 sb.append("\nspeed : "); sb.append(bdLocation.getSpeed());// 单位:公里每小时 sb.append("\nsatellite : "); sb.append(bdLocation.getSatelliteNumber()); sb.append("\nheight : "); sb.append(bdLocation.getAltitude());// 单位:米 sb.append("\ndirection : "); sb.append(bdLocation.getDirection());// 单位度 sb.append("\naddr : "); sb.append(bdLocation.getAddrStr()); sb.append("\ndescribe : "); sb.append("gps定位成功"); } else if (bdLocation.getLocType() == BDLocation.TypeNetWorkLocation){// 网络定位结果 sb.append("\naddr : "); sb.append(bdLocation.getAddrStr()); //运营商信息 sb.append("\noperationers : "); sb.append(bdLocation.getOperators()); sb.append("\ndescribe : "); sb.append("网络定位成功"); } else if (bdLocation.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果 sb.append("\ndescribe : "); sb.append("离线定位成功,离线定位结果也是有效的"); } else if (bdLocation.getLocType() == BDLocation.TypeServerError) { sb.append("\ndescribe : "); sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到[email protected],会有人追查原因"); } else if (bdLocation.getLocType() == BDLocation.TypeNetWorkException) { sb.append("\ndescribe : "); sb.append("网络不同导致定位失败,请检查网络是否通畅"); } else if (bdLocation.getLocType() == BDLocation.TypeCriteriaException) { sb.append("\ndescribe : "); sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机"); } sb.append("\nlocationdescribe : "); sb.append(bdLocation.getLocationDescribe());// 位置语义化信息 List<Poi> list = bdLocation.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.d("BaiduLocationApiDem", sb.toString()); */ }