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 }