今天用了下百度地图,简单写了一个例子,记录下。
一、申请AK(API Key)
要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。
首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/apiconsole/key/create这个网址,添加应用:
至于怎样获取数字签名(SHA1)和包名,这里有详细教程http://developer.baidu.com/map/index.php?title=androidsdk/guide/key,这里就不一一详述了。
接下来就是把下载下来的开发包添加到工程里面,也就是配置下地图SDK工程:
Eclipse工程配置方法
第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
1. 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
2. Project -> clean-> clean all .
Android Studio工程配置方法
第一步:在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,在src/main/目录下新建jniLibs目录,放入libBaiduMapSDK_vX_X_X_X.so如下图所示,注意jar和so的前3位版本号必须一致,并且保证使用一次下载的文件夹中的两个文件,不能不同功能组件的jar或so交叉使用。
第二步:导入jar包。菜单栏选择File->Project Structor->Modules->Dependencies,点击+号,选择File dependency,选择jar包导入。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
二、工程例子
我的开发工具是eclipse,所以接下来的代码基于eclipse工具写的,接下来就是正文。
1. 将下载下来的开发包中的jar包和so文件添加到libs文件下,如图:
2. 在AndroidManifest.xml中添加开发秘钥和所需权限:
权限:
1 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 2 <uses-permission android:name="android.permission.INTERNET" /> 3 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 4 <uses-permission android:name="android.permission.WAKE_LOCK" /> 5 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 6 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 7 <uses-permission android:name="android.permission.GET_TASKS" /> 8 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 9 <uses-permission android:name="android.permission.WRITE_SETTINGS" />
3. 在布局文件中添加地图控件:
1 <com.baidu.mapapi.map.MapView 2 android:id="@+id/bmapview" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:clickable="true" />
4.修改MainActivity.java文件:
1 package com.example.testmap; 2 3 import com.baidu.mapapi.SDKInitializer; 4 import com.baidu.mapapi.map.BaiduMap; 5 import com.baidu.mapapi.map.MapView; 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 11 public class MainActivity extends Activity { 12 13 // 百度地图控件 14 private MapView mMapView = null; 15 // 百度地图对象 16 private BaiduMap mBaiduMap = null; 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 22 // 在使用SDK各组件之前初始化context信息,传入ApplicationContext 23 // 注意该方法要再setContentView方法之前实现 24 SDKInitializer.initialize(getApplicationContext()); 25 setContentView(R.layout.activity_main); 26 27 // 获取地图控件引用 28 mMapView = (MapView) findViewById(R.id.bmapview); 29 mBaiduMap = mMapView.getMap(); 30 } 31 32 @Override 33 protected void onResume() { 34 super.onResume(); 35 mMapView.onResume(); 36 } 37 38 @Override 39 protected void onPause() { 40 super.onPause(); 41 mMapView.onPause(); 42 } 43 44 @Override 45 protected void onDestroy() { 46 mMapView.onDestroy(); 47 mMapView = null; 48 super.onDestroy(); 49 } 50 51 @Override 52 public boolean onCreateOptionsMenu(Menu menu) { 53 CreateMenu(menu); 54 return true; 55 } 56 57 private void CreateMenu(Menu menu) { 58 MenuItem mnu1 = menu.add(0, 0, 0, "显示卫星地图");{ 59 } 60 MenuItem mnu2 = menu.add(0, 1, 1, "实时交通地图");{ 61 } 62 MenuItem mnu3 = menu.add(0, 2, 2, "普通地图 ");{ 63 } 64 } 65 66 @Override 67 public boolean onOptionsItemSelected(MenuItem item) { 68 // Handle action bar item clicks here. The action bar will 69 // automatically handle clicks on the Home/Up button, so long 70 // as you specify a parent activity in AndroidManifest.xml. 71 if (item.getItemId() == 0) 72 { 73 // 显示为卫星地图 74 mBaiduMap.setBaiduHeatMapEnabled(false); 75 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); 76 } 77 else if (item.getItemId() == 1) 78 { 79 // 实时交通地图 80 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); 81 mBaiduMap.setBaiduHeatMapEnabled(true); 82 } 83 else if (item.getItemId() == 2) 84 { 85 // 普通地图 86 mBaiduMap.setBaiduHeatMapEnabled(false); 87 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); 88 } 89 return true; 90 } 91 92 }
5.运行效果:
点击menu键,有三种地图选择:
点击显示卫星地图:
点击实时交通地图:
回到普通地图: