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);
List<OverlayOptions> options = new ArrayList<OverlayOptions>();
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);
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.mipmap.icon_mark);
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);
options.add(option1);
options.add(option2);
options.add(option3);
mBaiduMap.addOverlays(options);
//定位初始化
mLocationClient = new LocationClient(this);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setCoorType("bd09ll"); //五秒返回一次位置
option.setIsNeedAddress(true);
option.setIsNeedLocationDescribe(true);
mLocationClient.setLocOption(option);
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();
}
private ImageButton btn_des_back;
private TextView place_name, place_des;
private ImageView place_pic;
Intent mIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_description);
mIntent = getIntent();
init();
}
private void init(){
place_name = (TextView)findViewById(R.id.place_name);
place_des = (TextView)findViewById(R.id.place_des);
place_pic = (ImageView)findViewById(R.id.place_pic);
//获取从MainActivity传输过来的数据
Bundle bd = mIntent.getExtras();
//地名
int nameid = bd.getInt("name");
place_name.setText(nameid);
//描述
int desid = bd.getInt("des");
place_des.setText(desid);
//图片
int picid = bd.getInt("picname");
place_pic.setImageResource(picid);
}
//绑定返回按钮的点击事件
public void back_onclick(View v){
Intent mIntent2 = new Intent();
mIntent2.setClass(DescriptionActivity.this, MainActivity.class);
startActivity(mIntent2);
}
SDKInitializer.initialize(getApplicationContext());
是显示地图的方法。后面有一个获取定位权限的方法,获取后初始化地图必须放在布局初始化之前。
MapView是显示地图视图的类,责从服务端获取地图数据。它将会捕捉屏幕触控手势事件,可以进行放大和缩小。
List<OverlayOptions> options
是要创建一个放置软件园校区标志性建筑的集合,OverlayOptions类是地图覆盖物选型基类。MarkerOptions类定义地图 Marker 覆盖物基类,position(LatLng p_library)
可设置覆盖物的位置坐标,icons(bitmap)
设置覆盖物的图标.
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声明周期管理。