赞
踩
要将位置数据以地图的形式显示,需要使用第三方的地图服务。常用的地图服务有谷歌地图、百度地图、高德地图等。这里我们以百度地图为例进行介绍。
百度地图服务的网站是:https://lbsyun.baidu.com/。百度地图提供的服务包括:
使用百度地图服务需要以下步骤:
详细说明如下:
第一步,访问百度开发者中心首页:https://developer.baidu.com/,注册百度开发者帐号。
第二步,设置密钥。设置密钥是为了验证地图服务使用者的身份。百度限制每个使用者每天免费使用地图服务的次数。访问百度地图服务首页https://lbsyun.baidu.com/,按照要求注册并领取秘钥。
申请密钥需要创建一个应用,应用类型选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(https://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download)
选“自定义下载”,进入下载定制页面,选中“基础地图”、“检索”、“JAR”,“标准开发包”,然后点击最下面的“开发包”按钮。
百度地图SDK(V7.5.2)下载下来为一个zip文件,解压后为一个libs目录,其中的文件为开发用的jar包和so文件。如果需要示例代码和类文档,可以点另外两个按钮下载。
第四步,创建项目并引入需要的jar包和.so文件。下面我们编写一个例子,将百度地图显示在界面上。
在AndroidStudio项目中引入需要的jar包和.so文件。具体方法是:
注意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代码控制地图的生命周期和操作。具体包括:
代码如下:
- 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。所以最好在真机上运行百度地图的例子。
完整代码下载:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。