您的位置:首页 > 移动开发 > Android开发

android中关于百度地图的使用

2012-09-26 10:56 344 查看
在android手机上使用百度地图来定位的资料在网上很难找到,经过两天的折腾,终于搞出来了。下面的代码已经实现完整定位,需要注意的就是,如果你的百度地图的底图未显示出来,请确保你手机能使用GPRS(以移动为例)或WIFI联网,要使用精确定位的话,也必须要打开GPS。下面我们直接上代码,代码说明,百度里面有,一看就知道:

step1 AndroidManifest.xml文件



1 <?xml version="1.0" encoding="utf-8"?>
2  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3     package="com.studio.basf.mapdemo" android:versionCode="1"
4     android:versionName="1.0">
5     <application android:icon="@drawable/icon" android:label="@string/app_name"
6         android:name="MapManagerApplication">
7         <activity android:name=".MainActivity" android:label="@string/app_name">
8             <intent-filter>
9                 <action android:name="android.intent.action.MAIN" />
10                 <category android:name="android.intent.category.LAUNCHER" />
11             </intent-filter>
12         </activity>
13     </application>
14     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
15     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
16     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
17     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
18     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
19     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
20     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
21     <supports-screens android:largeScreens="true"
22         android:normalScreens="true" android:smallScreens="true"
23         android:resizeable="true" android:anyDensity="true" />
24     <uses-sdk android:minSdkVersion="4" />
25 </manifest>




step2 首先建立一个全局应用类,主要是创建一个BMapManager实例,为了方便管理



1 package com.studio.basf.mapdemo;
2
3 import android.app.Application;
4
5 import com.baidu.mapapi.BMapManager;
6 import com.baidu.mapapi.MKEvent;
7 import com.baidu.mapapi.MKGeneralListener;
8
9 public class MapManagerApplication extends Application {
10     BMapManager bMapManager = null;
11
12     static class MyGeneralListener implements MKGeneralListener {
13
14         @Override
15         public void onGetNetworkState(int iError) {
16
17         }
18
19         @Override
20         public void onGetPermissionState(int iError) {
21             if (iError ==  MKEvent.ERROR_PERMISSION_DENIED) {
22
23             }
24         }
25     }
26
27     @Override
28     public void onCreate() {
29         // TODO Auto-generated method stub
30         bMapManager = new BMapManager(this);
31         bMapManager.init("你的key", new MyGeneralListener());
32     }
33 }




step3 继承MapActivity,同时实现LocationListener接口



1 package com.studio.basf.mapdemo;
2
3 import android.location.Location;
4 import android.os.Bundle;
5
6 import com.baidu.mapapi.BMapManager;
7 import com.baidu.mapapi.GeoPoint;
8 import com.baidu.mapapi.LocationListener;
9 import com.baidu.mapapi.MKLocationManager;
10 import com.baidu.mapapi.MapActivity;
11 import com.baidu.mapapi.MapController;
12 import com.baidu.mapapi.MapView;
13 import com.baidu.mapapi.MyLocationOverlay;
14
15 public class MainActivity extends MapActivity implements LocationListener {
16     private BMapManager mBMapMan = null;
17     private MapView mMapView = null;
18     private MapController mMapController = null;
19     private MKLocationManager locationManager = null;
20
21     /** Called when the activity is first created. */
22     @Override
23     public void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.main);
26
27         mBMapMan = ((MapManagerApplication) getApplication()).bMapManager;
28         if (mBMapMan == null) {
29             ((MapManagerApplication) getApplication()).bMapManager = new BMapManager(
30                     getApplication());
31             ((MapManagerApplication) getApplication()).bMapManager.init(
32                     "你的key",
33                     new MapManagerApplication.MyGeneralListener());
34             mBMapMan = ((MapManagerApplication) getApplication()).bMapManager;
35         }
36         super.initMapActivity(mBMapMan);
37
38         locationManager = mBMapMan.getLocationManager();
39         locationManager.requestLocationUpdates(this);
40
41         mMapView = (MapView) findViewById(R.id.bmapsView);
42         mMapView.setBuiltInZoomControls(true);// 设置启用默认的缩放控件
43
44         mMapController = mMapView.getController();// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
45         mMapController.setZoom(12);// 设置地图zoom级别
46
47         MyLocationOverlay mylocTest = new MyLocationOverlay(this, mMapView);
48         mylocTest.enableMyLocation();
49         mylocTest.enableCompass();
50         mMapView.getOverlays().add(mylocTest);
51     }
52
53     @Override
54     public void onLocationChanged(Location location) {
55         // TODO Auto-generated method stub
56
57         if (location != null) {
58             mMapController.animateTo(new GeoPoint(
59                     (int) (location.getLatitude() * 1E6), (int) (location
60                             .getLongitude() * 1E6)));
61         }
62     }
63
64     @Override
65     protected void onDestroy() {
66         // TODO Auto-generated method stub
67         if (mBMapMan != null) {
68             mBMapMan.destroy();
69             ((MapManagerApplication) getApplication()).bMapManager = null;
70             mBMapMan = null;
71         }
72         super.onDestroy();
73     }
74
75     @Override
76     protected void onPause() {
77         // TODO Auto-generated method stub
78         if (mBMapMan != null) {
79             mBMapMan.stop();
80         }
81         super.onPause();
82     }
83
84     @Override
85     protected void onResume() {
86         // TODO Auto-generated method stub
87         if (mBMapMan != null) {
88             mBMapMan.start();
89         }
90         super.onResume();
91     }
92
93     @Override
94     protected boolean isRouteDisplayed() {
95         // TODO Auto-generated method stub
96         return false;
97     }
98 }




因为代码在需要在真机上运行才能看到效果,所以我这里就不截图,上面的代码直接复制下来就可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: