综合评测
百度地图是一款功能齐全,支持离线的常用地图服务。其具备以下特点:
1.百度地图是一款免费使用的跨Android,IOS的地图服务
2. 对于客户端而言,其最新版本(baidumapapi_v2_4_1.jar,
locSDK_3.1.jar,libBaiduMapSDK_v2_4_1.so, liblocSDK3.so)大小为2.10MB,对APP安装包而言体积增加1521KB,对客户端体积有一定影响。
3.百度提供全景地图和多数城市实时路况显示
4.路线查询会免费发送到手机上,非常人性化。
5.百度地图官方网站提供SDK包和在线文档,方便开发者下载以及在线查阅。
6.百度地图版本更新及时,最新版本为:Android V2.4.1,IOS V2.2.0
b.开发建议
1.百度地图使用的是面向接口的框架,无论是IOS还是安卓开发者,都必须具备熟练的OO编程功底,特别是面向对象的多态性和方法重写,如果不理解常用的设计模式和架构,对于该平台的掌握会稍微吃力。
2.建议熟悉JAVA,C#,ruby等面向对象开发者使用,对英文功底要求不高
3.如果熟悉基于配置的应用程序框架,那么使用本服务会事半功倍。
评测环境与基本参数
百度地图基本参数
是否免费 | 免费 |
支持平台 | Android,iOS |
支持离线地图导入 | 支持 |
支持卫星模式 | 支持 |
支持公交详情检索 | 支持 |
支持城际实时路况 | |
支持3D矢量地图渲染,支持离线 | 支持 |
支持地图截图 | 支持 |
支持短串分享 | 支持 |
LBS云检索 | 支持 |
支持自定义paopaoview弹出框 | 支持 |
支持公交、驾车、步行路线查询 | 支持 |
支持弧线绘制 | 支持 |
评测环境-----高速WIFI
测试环境: | Windows 7旗舰版(64x)+Eclipse+ I9000 |
测试对象 | 百度地图服务 |
测试手机 | 三星Galaxy S I9000 |
系统版本 | 4.2.1 |
手机网络 | WIFI |
测试方法 | 客户端运行地图DEMO +触屏测试API接口 |
测试时间 | 2014-2-26 22:02-22:34 |
测试环境-----日常2G网络
测试环境: | Windows 7旗舰版(64x)+Eclipse+ I9000 |
测试对象 | 百度地图服务 |
测试手机 | 三星Galaxy S I9000 |
系统版本 | 4.2.1 |
手机网络 | 2G |
测试方法 | 客户端运行地图DEMO +触屏测试API接口 |
测试时间 | 2014-2-26 23:16-23:28 |
三.客户端集成:
第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
<!--[endif]-->
第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
第三步:如何显示地图
百度地图SDK为开发者提供了便捷的显示百度地图数据的接口,通过以下几步操作,即可在您的应用中使用百度地图数据:
第一步:创建并配置工程
第二步:在Manifest中添加使用权限、Android版本支持和对应的开发密钥;
常用使用权限如下(开发者可根据自身程序需求,添加所需权限):
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > </permission>
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" > </uses-permission> <!-- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > </uses-permission> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.CAMERA" > </uses-permission> <uses-permission android:name="android.permission.RECORD_AUDIO" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 来电消音 --> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> |
<!--使用网络功能所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">
</uses-permission>
<!-- SDK离线地图和cache功能需要读写外部存储器 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS">
</uses-permission>
<!-- 获取设置信息和详情页直接拨打电话需要以下权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE">
</uses-permission>
<!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE">
</permission>
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_GPS"/>
配置Activity:
<activity android:name="baidumapsdk.demo.BaseMapDemo" android:configChanges="orientation|keyboardHidden" android:label="@string/demo_name_basemap" android:screenOrientation="sensor" > </activity> |
<activity android:name=".MapDemo"
android:screenOrientation="sensor"
android:configChanges="orientation|keyboardHidden">
</activity>
添加屏幕及版本支持:
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="false" android:resizeable="true" android:smallScreens="true" /> |
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true"/>
<uses-sdk android:minSdkVersion="7"></uses-sdk>
添加对应的开发密钥:
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="NEDRLaZHG9srKsLKomxGaSag" /> |
第三步:在布局xml文件中添加地图控件,布局文件保存为activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout> |
a.测试截图
b.遇到的问题
1. liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
2. 注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态Project -> clean-> clean all .
c.上手难易
百度地图使用难度中等,对于掌握面向接口开发的人来说,需要边查阅文档边开发。
d.花费时间
对于熟悉面向对象开发和基于配置的编程模型的开发者而言,大约需要一个小时即可完成集成到客户端。
e.开发支持和文档
百度地图服务提供Android,IOS两个平台的SDK,在线文档,FAQ。其中,其中Android SDK包里包括如下内容:
测试日志截图如下:
<!--[if !supportLists]-->四. <!--[endif]-->功能测试
基本地图功能
图层展示(普通地图\卫星地图)
地图操作
定位/导航
自定义绘制
更多测试详情可访问:www.devstore.cn