要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个拍庆开发包包含两个文件:baidumapapi.jar和libBMapApiEngine.so。下载地址:http://dev.baidu.com/wiki/static/imap/files/BaiduMapApi_Lib_Android_1.0.zip
2)申弊贺迟请API Key
和使用Google map api一样,在使用百度地图API之前也需要获取相应的API Key。百度地图API Key与你的百度账户相关联,因此您必须先有百度帐户,才能获得API Key;并且,该Key与您引用API的程序名称有关。
百度API Key的申请要比Google的简单多了,其实只要你有百度帐号,应该不超过30秒就能完成API Key的申请。申请地址:http://dev.baidu.com/wiki/static/imap/key/
3)创建一个Android工程
这里需要强调一点:百度地图移动版api支持Android 1.5及以上系统,因此我们创建的工程应基于Android SDK 1.5及以上。
工程创建完成后,将baidumapapi.jar和libBMapApiEngine.so分别拷贝到工程的根目录及libs/armeabi目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。
5)创建Activity继承租李com.baidu.mapapi.MapActivity
6)在AndroidManifest.xml中配置
7)运行结果
1.先来看看java代码,MainActivity.class参考代码如下:1 public class MainActivity extends MapActivity {
2 // 初始位置设置为西安
3 private double userLongitude = 34.341568 * 1E6// 纬度
4 private double userLatitude = 108.94017499999995 * 1E6// 经度
5 // 添加百度相关控件
6 private MapView mapView
7 private BMapManager bMapManager// 加载地图的引擎
8 // 百度地图上的key值
9 private String keyString = "01331AFA954E7E300428A5F0C9C829E0E16F87A3"
10 // 在百度地图上添加一些控件,例如放衡散大、缩小
11 private MapController mapController
12 private MKLocationManager mLocationManager
13
14 @Override
15 public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState)
17 setContentView(R.layout.activity_main)
18 // 实例咐如氏化控件
19 mapView = (MapView) this.findViewById(R.id.bmapView)
20 bMapManager = new BMapManager(MainActivity.this)
21 // 必须要加载key
22 bMapManager.init(keyString, new MKGeneralListener() {
23 // key值不正确
24 @Override
25 public void onGetPermissionState(int arg0) {
26 if (arg0 == 300) {
27Toast.makeText(MainActivity.this, R.string.key_error,Toast.LENGTH_LONG).show()
28 }
29 }
30 //网络出错
31 @Override
32 public void onGetNetworkState(int arg0) {
33 Toast.makeText(MainActivity.this, R.string.net_error,Toast.LENGTH_LONG).show()
34 }
35 })
36 this.initMapActivity(bMapManager)
37 mapView.setBuiltInZoomControls(true)// 表示可以设置缩放功橡模能
38 mapController = mapView.getController()
39 // 初始化Location模块
40 mLocationManager = bMapManager.getLocationManager()
41 // 通过enableProvider和disableProvider方法,选择定位的Provider
42 mLocationManager.enableProvider(MKLocationManager.MK_NETWORK_PROVIDER)
43 mLocationManager.disableProvider(MKLocationManager.MK_GPS_PROVIDER)
44 //返回手机位置
45 mLocationManager.requestLocationUpdates(locationListener)
46 mLocationManager.setNotifyInternal(5, 2)
47 // 添加定位图层
48 MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this,mapView)
49 myLocationOverlay.enableMyLocation()// 启用定位
50 myLocationOverlay.enableCompass()// 启用指南针
51 mapView.getOverlays().add(myLocationOverlay)
52 mapView.setTraffic(true)// 交通地图
53 // mapView.setSatellite(true)// 卫星地图
54 mapController.setZoom(15)// 设置缩放级别
55 mapView.invalidate()// 刷新地图
56 }
57 //获取经度纬度
58 private LocationListener locationListener = new LocationListener() {
59 @Override
60 public void onLocationChanged(Location location) {
61 if (location != null) {
62 userLatitude = location.getLatitude() * 1E6
63 userLongitude = location.getLongitude() * 1E6
64 GeoPoint mypoint = new GeoPoint((int)(userLatitude), (int)(userLongitude))
65 mapView.getController().animateTo(mypoint)
66 }
67 }
68 }
69 // 销毁
70 @Override
71 protected void onDestroy() {
72 super.onDestroy()
73 if (bMapManager != null) {
74 bMapManager.destroy()
75 bMapManager = null
76 }
77 }
78 // 停止
79 @Override
80 protected void onPause() {
81 super.onPause()
82 if (bMapManager != null) {
83mLocationManager.removeUpdates(locationListener)
84bMapManager.stop()
85 }
86 }
87 // 重启
88 @Override
89 protected void onResume() {
90 super.onResume()
91 if (bMapManager != null) {
92 bMapManager.start()
93 }
94 }
95 //
96 @Override
97 protected boolean isRouteDisplayed() {
98 return false
99 }
100
101
102 // Menu
103 // 当点击Menu按钮时,调用该方法
104 @Override
105 public boolean onCreateOptionsMenu(Menu menu) {
106 menu.add(0, 1, 1, R.string.exit).setIcon(
107 android.R.drawable.ic_menu_close_clear_cancel)
108 return super.onCreateOptionsMenu(menu)
109 }
110 @Override
111 public boolean onContextItemSelected(MenuItem item) { // 选中某个菜单项
112 if (item.getItemId() == 1) {
113MainActivity.this.finish()
114 }
115 return super.onOptionsItemSelected(item)
116 }
117 // 返回键
118 @Override
119 public boolean onKeyDown(int keyCode, KeyEvent event) {
120 if (keyCode == KeyEvent.KEYCODE_BACK) {
121finish()
122 }
123 return super.onKeyDown(keyCode, event)
124 }
125 }
126
2.布局文件,主要是添加显示地图的控件,activity_mainmain.xml参考代码如下:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent" >
5 <!-- 添加显示百度地图的控件 -->
6 <com.baidu.mapapi.MapView
7 android:id="@+id/bmapView"
8 android:layout_width="fill_parent"
9 android:layout_height="fill_parent"
10 android:clickable="true"
11 tools:context=".MainActivity" />
12 </LinearLayout>
3.设置配置文件,AndroidManifest.xml参考代码如下:
1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2 package="yu.hong.map"
3 android:versionCode="1"
4 android:versionName="1.0" >
5 <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" />
6 <!--添加百度地图开发授权 -->
7 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
8 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
9 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
10 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
11 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
12 <uses-permission android:name="android.permission.INTERNET" />
13 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
14 <!--添加对屏幕的支持 -->
15 <supports-screens
16 android:anyDensity="true"
17 android:largeScreens="true"
18 android:normalScreens="true"
19 android:resizeable="true"
20 android:smallScreens="true" />
21 <application
22 android:icon="@drawable/ic_maplauncher"
23 android:label="@string/app_name"
24 android:theme="@style/AppTheme" >
25 <activity
26 android:name=".MainActivity"
27 android:label="@string/title_activity_main" >
28 <intent-filter>
29 <action android:name="android.intent.action.MAIN" />
30 <category android:name="android.intent.category.LAUNCHER" />
31 </intent-filter>
32 </activity>
33 </application>
34 </manifest>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)