package my.project.washingcar.activity; import my.project.washingcar.R; import my.project.washingcar.view.HeaderView; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationConfigeration; import com.baidu.mapapi.map.MyLocationConfigeration.LocationMode; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng; public class ActLocation extends ActBase implements OnClickListener, BDLocationListener { // 定位相关 LocationClient mLocClient; MapView mMapView; BaiduMap mBaiduMap; boolean isFirstLoc = true;// 是否首次定位 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act_location); init(); } private void init() { initAbView(); initBaiduMapView(); } private void initAbView() { HeaderView header = (HeaderView) findViewById(R.id.header_location); header.setOnBackListener(this); } private void initBaiduMapView() { // 地图初始化 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 定位初始化 mLocClient = new LocationClient(this); mLocClient.registerLocationListener(this); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000); mLocClient.setLocOption(option); mLocClient.start(); // 设置地图模式 & 标记图标 LocationMode mCurrentMode = LocationMode.COMPASS; BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.map_icon_lbs); mBaiduMap.setMyLocationConfigeration(new MyLocationConfigeration( mCurrentMode, true, mCurrentMarker)); } /** * 定位SDK监听函数 */ @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) return; MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u); } } @Override public void onReceivePoi(BDLocation arg0) { } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.back: onBackPressed(); break; default: break; } } }