在上次正常显示百度地图的基础上,这次添加了搜索公交车功能,显示交通路线,以及卫星地图切换功能。整个过程如下
一、注册账号,获取key
这个和google有点类似,不过要简单的多,并且也没有使用限次,据说是免费的。
进入百度开发者中心http://developer.baidu.com/,注册个账号,安要求做OK。在主页点百度地图API,接着在下面些点Android SDK,开始百度地图Android SDK开发。获取密钥,申请key简单描述哈,就可以生成API密钥,记下这个以后程序会用到。
二、新建AVD模拟器
启动eclipse。选择Window/Android Virtual Device Manager,弹出Android Virtual Device Manager选择New,新建AVD信息如下:
接着选择新建的AVD,start接着Launch就开启AVD了,开启时间有点长,一般开了就不关。不管它下面新建Android工程
三、新建Android Application Project
File/New/Android Application Project,创建自己的工程,我的如下:
Application Name:mapsearch
Porject Name:mapsearch
Package Name: com.example.mapsearch
Minimum Required SDK:API 10:Android 2.3.3(Gingerbread)
Target SDK:API 14:Android 4.0 (IceCreamSandwich)
Compile With:API 14:Android 4.0 (IceCreamSandwich)
Theme:None
剩下的Next保持默认不变,Finish就OK。下面仿照官方编写代码http://developer.baidu.com/map/sdkandev-2.htm ,我完全按官方的来发现编译通不过,就仿照给的例子修改。其中用到的库在官方网站上都有下的,在相关下载下BaiduMap_AndroidSDK_v2.1.1_Lib.zip、BaiduMap_AndroidSDK_v2.1.1_Sample.zip即可。
1.添加库、设置工程属性
将下载的库添加到新建工程中。在左边Package Explore,mapsbase工程libs目录下新建armeabi文件夹。接着把下载的baidumapapi_v2_1_1.jar、locSDK_3.1.jar拖到libs目录,libapp_BaiduMapApplib_v2_1_1.so、libvi_voslib.so 和liblocSDK3.so拖到刚刚建的armeabi目录。接着在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_v2_1_1.jar,确定后返回。通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
2.编写代码
在前面正常显示地图基础上,增加搜索功能及地图图层显示·,我的代码如下:
根目录下AndroidMainfest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapsearch"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="14" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name=".MapDemo"
android:screenOrientation="sensor"
android:configChanges="orientation|keyboardHidden">
</activity>
<activity
android:name="com.example.mapsearch.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>