300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android定位功能开发(2)——用百度地图API显示地图

Android定位功能开发(2)——用百度地图API显示地图

时间:2019-02-02 01:57:22

相关推荐

Android定位功能开发(2)——用百度地图API显示地图

要将位置数据以地图的形式显示,需要使用第三方的地图服务。常用的地图服务有谷歌地图、百度地图、高德地图等。这里我们以百度地图为例进行介绍。

百度地图服务的网站是:/。百度地图提供的服务包括:

定位服务:获取经纬度地图服务:地图显示等数据服务:地理编码等出行服务:公交线路等轨迹服务:轨迹追踪等分析服务:交通拥堵等

使用百度地图服务需要以下步骤:

注册百度开发者帐号申请使用百度地图服务的密钥,即AK(API Key)下载百度地图SDK在项目中引入需要的jar包和.so文件,jar文件为Java类库,.so文件为Linux下用户层动态库,即类库中一些Java方法的C++实现调用百度地图API

详细说明如下:

第一步,访问百度开发者中心首页:/,注册百度开发者帐号。

第二步,设置密钥。设置密钥是为了验证地图服务使用者的身份。百度限制每个使用者每天免费使用地图服务的次数。访问百度地图服务首页/,按照要求注册并领取秘钥。

申请密钥需要创建一个应用,应用类型选Android SDK,并填写必要的信息,以便调用地图服务时验证身份。其中发布版SHA1为开发者所用数字签名的指纹,可从keystore文件获得。开发版SHA1为AndroidStudio所用的数字签名的指纹,可从开发工具查看。包名为应用的包名,通过SHA1+包名可以验证开发者身份。

AndroidStudio开发版SHA1保存在秘钥文件debug.keystore中,用keytool.exe能够查看。具体方法是:打开命令行窗口,切换到C:\Users\(当前用户)\.android\目录,秘钥文件debug.keystore文件就保存在这个目录中。运行keytool命令:

keytool –list –v –keystore debug.keystore

开发版数字签名文件的密码为空或者"Android",为空的话需要输入秘钥时直接回车即可。

发布版SHA1需要使用keytool命令从发布时用的数字签名keystore文件获得,注意保密!命令是:

keytool –list –v –keystore

发布版数字签名文件的密码为开发者创建数字签名时设置的密码。

应用创建成功后,得到一个AK(API Key)。API Key需要填入项目配置文件中,和数字签名、包名一起验证开发者身份。

第三步,需要下载百度地图SDK。从百度地图开放平台首页菜单栏选择:开发文档-Android地图SDK(/index.php?title=androidsdk/sdkandev-download)

选“自定义下载”,进入下载定制页面,选中“基础地图”、“检索”、“JAR”,“标准开发包”,然后点击最下面的“开发包”按钮。

百度地图SDK(V7.5.2)下载下来为一个zip文件,解压后为一个libs目录,其中的文件为开发用的jar包和so文件。如果需要示例代码和类文档,可以点另外两个按钮下载。

第四步,创建项目并引入需要的jar包和.so文件。下面我们编写一个例子,将百度地图显示在界面上。

在AndroidStudio项目中引入需要的jar包和.so文件。具体方法是:

在工程app/libs目录下放入百度地图的jar包在src/main目录下新建jniLibs目录,将包含.so文件的五个目录复制到jniLibs下在jar文件上点右键,选“add as library”

注意jar和so的版本号必须一致,必须使用同一个压缩包中的文件。

在项目中使用百度地图API还需要:在配置文件中添加权限、API Key。代码如下:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><application ……><meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="sh7W0c2SOQkTnk0eQnLq9E5cEciMxLm2" /> <activity……</activity></application>

在界面布局中添加百度MapView控件,代码如下:

<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />

百度MapView的生命周期需要根据Activity的生命周期来管理,用Java代码控制地图的生命周期和操作。具体包括:

在Activity的onCreate中初始化,注意:SDK初始化必须在MapView初始化之前,所以在setContentView之前在Activity的onDestroy中销毁在Activity的onPause中暂停在Activity的onResume中恢复

代码如下:

public class MainActivity extends Activity {MapView mMapView;protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);SDKInitializer.setAgreePrivacy(getApplicationContext(), true);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.main_layout);mMapView = (MapView)findViewById(R.id.bmapView);}protected void onDestroy(){super.onDestroy();mMapView.onDestroy();}protected void onPause(){super.onPause();mMapView.onPause();}protected void onResume(){super.onResume();mMapView.onResume();}}

至此,运行项目即可将百度地图显示在手机上,运行时需访问互联网。在模拟器上运行时可能会有"eglChooseConfig failed"异常,原因是百度地图绘制时需要OpenGL3.0,而模拟器只支持2.0。所以最好在真机上运行百度地图的例子。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。