Android_百度地图基本用法4

  1 /*
  2  *1.定位
  3  *2.自定义图标
  4  *2.三种模式切换:普通模式,罗盘模式,跟随模式
  5  * 
  6  * */
  7 public class MainActivity extends Activity {
  8     MapView mapView;
  9     BaiduMap mBaiduMap;
 10     // 定位相关
 11     private LocationClient mLocationClient;
 12     private MyLocationListener mLocationListener;
 13     private boolean isFirst = true;
 14     // 记录经纬度
 15     private double mLatitude;
 16     private double mLongtitude;
 17     // 自定义位置图标
 18     private BitmapDescriptor mIconLocation;
 19     
 20     private float mCurrentX;
 21     private com.baidu.mapapi.map.MyLocationConfiguration.LocationMode mLocationMode;
 22 
 23     @Override
 24     protected void onCreate(Bundle savedInstanceState) {
 25         super.onCreate(savedInstanceState);
 26         SDKInitializer.initialize(getApplicationContext());
 27         requestWindowFeature(Window.FEATURE_NO_TITLE);
 28         setContentView(R.layout.fragment_main);
 29         mapView = (MapView) findViewById(R.id.bmapView);
 30         mBaiduMap = mapView.getMap();
 31         // 设置地图标尺500m
 32         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
 33         mBaiduMap.setMapStatus(msu);
 34 
 35         // 初始化定位
 36         mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL;
 37         mLocationClient = new LocationClient(this);
 38         mLocationListener = new MyLocationListener();
 39         mLocationClient.registerLocationListener(mLocationListener);
 40         LocationClientOption option = new LocationClientOption();
 41         option.setCoorType("bd09ll");// 坐标类型
 42         option.setIsNeedAddress(true);
 43         option.setOpenGps(true);
 44         option.setScanSpan(1000);// 每隔1秒请求
 45         mLocationClient.setLocOption(option);
 46 
 47         // 初始化图标
 48         mIconLocation = BitmapDescriptorFactory
 49                 .fromResource(R.drawable.navi_map_gps_locked);
 50         
 51 
 52     }
 53 
 54     public void click(View view) {
 55         switch (view.getId()) {
 56         case R.id.mode_common:
 57             mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL;
 58             break;
 59 
 60         case R.id.mode_follow:
 61             mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.FOLLOWING;
 62             break;
 63         case R.id.mode_compass:
 64             mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.COMPASS;
 65             break;
 66 
 67         }
 68     }
 69 
 70     public void but(View view) {
 71         switch (view.getId()) {
 72 
 73         // 定位到我的位置
 74         case R.id.back:
 75             LatLng latLng = new LatLng(mLatitude, mLongtitude);
 76             MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
 77             mBaiduMap.animateMapStatus(msu);
 78 
 79             break;
 80 
 81         }
 82 
 83     }
 84 
 85     @Override
 86     protected void onResume() {
 87 
 88         super.onResume();
 89         mapView.onResume();
 90     }
 91 
 92     @Override
 93     protected void onStart() {
 94 
 95         super.onStart();
 96         // 开启定位
 97         mBaiduMap.setMyLocationEnabled(true);
 98         if (!mLocationClient.isStarted()) {
 99             mLocationClient.start();
100         }
101         
102 
103     }
104 
105     @Override
106     protected void onStop() {
107         // TODO Auto-generated method stub
108         super.onStop();
109         // 停止定位
110         mBaiduMap.setMyLocationEnabled(false);
111         mLocationClient.stop();
112         
113 
114     }
115 
116     @Override
117     protected void onPause() {
118         // TODO Auto-generated method stub
119         super.onPause();
120         mapView.onPause();
121     }
122 
123     @Override
124     protected void onDestroy() {
125         // TODO Auto-generated method stub
126         super.onDestroy();
127         mapView.onDestroy();
128     }
129 
130     private class MyLocationListener implements BDLocationListener {
131 
132         @Override
133         public void onReceiveLocation(BDLocation arg0) {
134             // 精度、纬度
135             MyLocationData data = new MyLocationData.Builder()
136                     .direction(mCurrentX).accuracy(arg0.getRadius())
137                     .latitude(arg0.getLatitude())
138                     .longitude(arg0.getLongitude()).build();
139 
140             mBaiduMap.setMyLocationData(data);
141             // 设置自定义图标
142             MyLocationConfiguration config = new MyLocationConfiguration(
143                     mLocationMode, true, mIconLocation);
144             mBaiduMap.setMyLocationConfigeration(config);
145             // 更新经纬度
146             mLatitude = arg0.getLatitude();
147             mLongtitude = arg0.getLongitude();
148             // 第一次进入,设置用户当前位置
149             if (isFirst) {
150                 LatLng latLng = new LatLng(arg0.getLatitude(),
151                         arg0.getLongitude());
152                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
153                 mBaiduMap.animateMapStatus(msu);
154                 isFirst = false;
155                 // 显示地址
156                 Toast.makeText(MainActivity.this, arg0.getAddrStr(), 0).show();
157 
158             }
159 
160         }
161 
162         @Override
163         public void onConnectHotSpotMessage(String arg0, int arg1) {
164             // TODO Auto-generated method stub
165 
166         }
167 
168     }
169 
170 }
原文地址:https://www.cnblogs.com/my334420/p/7112333.html