2021@SDUSC
显示地图 protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化地图必须放在布局初始化之前
//地图初始化方法中任选一种
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取定位权限后初始化
showContacts();
}
private void init(){
//获取地图控件
mMapView = findViewById(R.id.themapView);
//得到地图
mBaiduMap = mMapView.getMap();
//开启定位图层
mBaiduMap.setMyLocationEnabled(true);
//绑定按钮监听事件
findViewById(R.id.btn_library).setOnClickListener(this);
findViewById(R.id.btn_tech).setOnClickListener(this);
findViewById(R.id.btn_dining).setOnClickListener(this);
//设置地图标点
//创建OverlayOptions的集合
List options = new ArrayList();
//构造坐标数据
//经纬度可以通过百度地图官网进行搜索获得
LatLng p_library = new LatLng(36.674945, 117.144168);
LatLng p_teach = new LatLng(36.673717, 117.145928);
LatLng p_dining = new LatLng(36.672553, 117.147145);
//自定义Marker的图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.mipmap.icon_mark);
//创建OverlayOptions属性
OverlayOptions option1 = new MarkerOptions()
.position(p_library)
.icon(bitmap);
OverlayOptions option2 = new MarkerOptions()
.position(p_teach)
.icon(bitmap);
OverlayOptions option3 = new MarkerOptions()
.position(p_dining)
.icon(bitmap);
//将OverlayOptions添加到list
options.add(option1);
options.add(option2);
options.add(option3);
//设置mark覆盖物点击监听器
// mBaiduMap.setOnMarkerClickListener(new MyMarkerClickListener());
//在地图上批量添加
mBaiduMap.addOverlays(options);
//定位初始化
mLocationClient = new LocationClient(this);
//通过LocationClientOption设置LocationClient相关参数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(5000);//五秒返回一次位置
// 可选,设置地址信息
option.setIsNeedAddress(true);
//可选,设置是否需要地址描述
option.setIsNeedLocationDescribe(true);
//设置locationClientOption
mLocationClient.setLocOption(option);
//注册LocationListener监听器
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
mLocationClient.start();
}
//实现地图生命周期管理
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
SDKInitializer.initialize(getApplicationContext());是显示地图的方法。后面有一个获取定位权限的方法。
MapView是显示地图视图的类,责从服务端获取地图数据。它将会捕捉屏幕触控手势事件,可以进行放大和缩小。
List
设置覆盖物的图标.
LatLng p_library = new LatLng(36.674945, 117.144168);中LatLng类是地理坐标基本数据结构,构造方法中前者是经度,后者是纬度,这些数据为作者通过百度地图官网进行搜索获得。
Bitmap 代表一个位图,BitmapDescriptor是Bitmap 描述信息类,BitmapDescriptorFactorybitmap 描述信息工厂类fromResource(R.mipmap.icon_mark)
根据资源Id创建不适配设备像素密度的Bitmap描述信息。 mBaiduMap.addOverlays(options);为获取的地图添加刚刚根据纬度得到的地图覆盖物。
LocationClient定位服务的客户端,宿主程序在客户端声明此类,并调用,仅可以在在主线程中启动。LocationClientOption配置定位SDK各配置参数,比如定位模式、定位时间间隔、坐标系类型等。setOpenGps(true)设置打开gps进行定位;setCoorType("bd09ll")设置坐标类型,设置的参数为返回百度经纬度坐标系;setScanSpan(5000);设置扫描间隔为5秒,单位是毫秒 当<1000时,定时定位无效;setIsNeedAddress(true);设置返回地址信息;setIsNeedLocationDescribe(true);设置返回位置语义化信息。
后面为定位服务添加监听器。registerLocationListener(myLocationListener);为注册定位监听函数。start();启动定位sdk。
在activity执行onResume,即在这个活动在应用程序与用户开始可交互的时候调用mMapView. onResume (),将地图唤醒,开始显示地图页面。
在activity执行onPause,即当前活动将要被暂停,上一个活动即将被恢复时调用mMapView. onPause (),将地图暂停。
在activity执行onDestroy,即活动被系统销毁之前调用mMapView.onDestroy()将地图销毁。以上三个方法实现地图的1声明周期管理。



