如何在Android应用中使用百度地图api

如何在Android应用中使用百度地图api,第1张

1)下载百度地图移动版API(Android)开发包

要在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了。

4)在布局文件中添加地图控件

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>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11974521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存