在前一篇中,已经完成了api的配置工作 Android百度地图API学习(一)
这一篇中,开始用个小例子来学习一下开发的基本流程
第一步 在xml布局文件中加入mapview控件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/hello" />
- <com.baidu.mapapi.MapView android:id="@+id/bmapsView"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:clickable="true" />
- <span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei'; line-height: 30px; ">MapController类</span></LinearLayout>
第二步,在Manifest中添加使用权限
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
- <uses-permission android:name="android.permission.INTERNET"></uses-permission>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
- public class MainActivity extends MapActivity implements LocationListener {
- BMapManager mBMapMan;
- MapController mMapController;
- MKOfflineMap mOffline = null; //申明变量 离线地图
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //BMapManager的方法
- mBMapMan = new BMapManager(getApplication());
- // mBMapMan.init("3B388F2271D0255A779274772B906055B2942088", null);//这是普通的 地图管理器的 注册
- mBMapMan.init("注册码", new MKGeneralListener() {
- public void onGetPermissionState(int iError) {
- // TODO 返回授权验证错误,通过错误代码判断原因,MKEvent中常量值。
- System.out.println("");
- }
- public void onGetNetworkState(int iError) {
- // TODO 返回网络错误,通过错误代码判断原因,MKEvent中常量值。
- System.out.println("");
- }
- });
- super.initMapActivity(mBMapMan);
- //mapview的方法 ,都是一些地图显示情况。 MapView.LayoutParams可以进行布局的设置
- MapView mMapView = (MapView) findViewById(R.id.bmapsView);
- //设置启用内置的缩放控件
- mMapView.setBuiltInZoomControls(true);
- //交通图
- //mMapView.setTraffic(true);
- //卫星图
- //mMapView.setSatellite(true);
- //加入新的图层
- mMapView.getOverlays().add(new MyOverlay());
- //设置地图中心点
- //mMapController.setCenter(p2);
- //获取最大缩放级别
- //int zoomax=mMapView.getMaxZoomLevel();
- //获取当前缩放级别
- //int currentzoom=mMapView.getZoomLevel();
- //onDetachedFromWindow() 当mapview与window分离使用 就要清除缩放控件
- //getProjection() 获取屏幕像素和经纬度转换
- //Point point = mapView.getProjection().toPixels(p2, null);
- //canvas.drawText("深圳新世纪", point.x, point.y, paint);
- //获得覆盖层列表
- //List<Overlay> lo=new ArrayList<Overlay>();
- //lo=mMapView.getOverlays();
- // MapController处理地图移动和缩放的工具类。
- // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
- mMapController = mMapView.getController();
- //设置地图zoom级别
- mMapController.setZoom(15);
- }
最后要加入关于BMapManager的管理设置
- @Override
- protected void onDestroy() {
- if (mBMapMan != null) {
- mBMapMan.destroy();
- mBMapMan = null;
- }
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- if (mBMapMan != null) {
- mBMapMan.stop();
- }
- super.onPause();
- }
- @Override
- protected void onResume() {
- if (mBMapMan != null) {
- mBMapMan.start();
- }
- super.onResume();
- }
其实,基本的就是BMapManager 类和MapController类
BMapManager 类,负责管理地图引擎。
- mBMapMan = new BMapManager(getApplication());
- BMapMan.init("3B388F2271D0255A779274772B906055B2942088", null);//这是普通的 地图管理器的 注册
- mBMapMan.start();<span style="font-family: 宋体; line-height: 18px; background-color: rgb(245, 249, 252); ">//开启api</span>
- mMapController = mMapView.getController();
- //设置地图zoom级别
- mMapController.setZoom(15);
最后是效果图:
原文地址:点击打开链接