Android中应用百度地图API开发地图APP实例-显示百度地图
<h1>场景</h1><h2>效果</h2>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213809206-1192763897.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY</p>
<p>http://lbsyun.baidu.com/index.php</p>
<h2>申请API_KEY</h2>
<p>登录百度开放平台后找到控制台下的应用管理-创建应用</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213814083-483587890.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>依次输入应用名,应用类型选择Android SDK</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213820047-1835951690.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后下面需要输入发布版SHA1和包名</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213826759-1885025370.jpg" alt=""></p>
<p> </p>
<p> </p>
<p><img alt=""></p>
<h2>获取应用SHA1</h2>
<p>首先来到.Android文件所在的位置,默认位置如下</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213902458-547961597.jpg" alt=""></p>
<p> </p>
<p> </p>
<p><img alt=""></p>
<p>如果修改过就要到修改的路径下。</p>
<p>AndroidStudio修改默认C盘配置文件夹(.android.gradle.AndroidStudio)以及修改后避免踩的坑:</p>
<p>https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103791948</p>
<p>我这里是修改过,所以这里的路径是在D:\Android</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213907562-181594367.jpg" alt=""></p>
<p> </p>
<p> </p>
<p><img alt=""></p>
<p>在此路径下打开命令行窗口。</p>
<p>这里采用使用JDK自带的keytool工具生成</p>
<p>keytool默认路径:C:\Program Files\Java\jdk1.8.0_181\bin</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213910663-1184766105.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后将keytool.exe拖到上面打开的.Android所在路径命令行窗口中,然后再后面输入</p>
<div class="cnblogs_code">
<pre>-list -v -keystore debug.keystore</pre>
</div>
<p>回车。然后提示输入密钥库命令,直接回车</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213928035-1822370747.jpg" alt=""></p>
<p><img alt=""></p>
<p>然后就可以在证书指纹中获取SHA1</p>
<p><img alt=""></p>
<p> <img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213933156-2000491588.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后再回到百度开放平台点击提交。就可以获取开发密钥了。</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213952719-1589722687.jpg" alt=""></p>
<p> </p>
<p> </p>
<p><img alt=""></p>
<h2>获取Android地图SDK</h2>
<p>然后再回到百度开放平台中开发文档下的Android开发下Android地图SDK</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416213957267-1604352461.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后选择自定义下载</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214001027-1331349290.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后这里只勾选几个基本功能,具体功能根据自己需求勾选,然后点击下方的开发包和示例代码进行下载</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214004165-1115504810.jpg" alt=""></p>
<p> </p>
<p> </p>
<h2>项目中集成SDK</h2>
<p>使用AndroidStudio新建项目,将项目视图由Android切换为Project</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214008834-313527406.jpg" alt=""></p>
<p> </p>
<p> </p>
<p><img alt=""></p>
<p>这样就会显示libs目录,然后解压上面下载的开发包,可以看到其下面libs目录下两个jar包,将其复制到项目的lib下</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214012723-1275812076.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后选中这两个jar包右键Add As Library,添加到库</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214018447-965065523.jpg" alt=""></p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214023633-1344006168.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后在src/main下新建JNIlibs目录</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214028207-1430320041.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>然后将上面SDK下libs下的所有目录复制到此目录下</p>
<p><img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214035591-1944129663.jpg" alt=""></p>
<p> </p>
<p> </p>
<p><img alt=""></p>
<p>然后将项目切换回Android视图下,打开activity_main.xml修改布局文件</p>
<p>将布局修改为相对布局,并添加百度地图组件,并设置id</p>
<div class="cnblogs_code">
<pre><?xml version=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.0</span><span style="color: rgba(128, 0, 0, 1)">"</span> encoding=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf-8</span><span style="color: rgba(128, 0, 0, 1)">"</span>?>
<RelativeLayout xmlns:android=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://schemas.android.com/apk/res/android</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
xmlns:app</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://schemas.android.com/apk/res-auto</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
xmlns:tools</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://schemas.android.com/tools</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:layout_width</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">match_parent</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:layout_height</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">match_parent</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
tools:context</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">.MainActivity</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<<span style="color: rgba(0, 0, 0, 1)">com.baidu.mapapi.map.MapView
android:id</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@+id/bmapview</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:layout_width</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">match_parent</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:layout_height</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">match_parent</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:clickable</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
</RelativeLayout></pre>
</div>
<p> </p>
<p>然后来到MainActivity.java中,首先声明地图组件然后再onCreate方法中初始化地图SDK,注意初始化地图SDK</p>
<p>的代码要放在setContentView的代码前。</p>
<p>然后还需要分别设置地图组件的声明周期。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">package com.badao.baidumap;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> MainActivity extends AppCompatActivity {
</span><span style="color: rgba(0, 0, 255, 1)">private</span> MapView mapView;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">声明地图组件</span>
<span style="color: rgba(0, 0, 0, 1)">
@Override
</span><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">初始化地图SDK</span>
<span style="color: rgba(0, 0, 0, 1)"> SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mapView </span>=<span style="color: rgba(0, 0, 0, 1)"> (MapView) findViewById(R.id.bmapview);
}
@Override
</span><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> onPause() {
super.onPause();
mapView.onPause();
}
@Override
</span><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> onDestroy() {
super.onDestroy();
mapView.onDestroy();
mapView </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
}
@Override
</span><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> onResume() {
super.onResume();
mapView.onResume();
}
}</span></pre>
</div>
<p> </p>
<p>然后打开mainfests下的AndroidManifest.xml</p>
<p>首先添加meta-data标签,内容如下</p>
<div class="cnblogs_code">
<pre> <meta-<span style="color: rgba(0, 0, 0, 1)">data
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.baidu.lbsapi.API_KEY</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:value</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">申请的开发密钥</span><span style="color: rgba(128, 0, 0, 1)">"</span>/></pre>
</div>
<p> </p>
<p>然后进行权限的声明。完整示例代码</p>
<div class="cnblogs_code">
<pre><?xml version=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.0</span><span style="color: rgba(128, 0, 0, 1)">"</span> encoding=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf-8</span><span style="color: rgba(128, 0, 0, 1)">"</span>?>
<manifest xmlns:android=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://schemas.android.com/apk/res/android</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
xmlns:tools</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://schemas.android.com/tools</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
package</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.badao.baidumap</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.permission.INTERNET</span><span style="color: rgba(128, 0, 0, 1)">"</span> />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.permission.ACCESS_NETWORK_STATE</span><span style="color: rgba(128, 0, 0, 1)">"</span> />
<!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.permission.READ_EXTERNAL_STORAGE</span><span style="color: rgba(128, 0, 0, 1)">"</span> />
<!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.permission.WRITE_EXTERNAL_STORAGE</span><span style="color: rgba(128, 0, 0, 1)">"</span> />
<<span style="color: rgba(0, 0, 0, 1)">application
android:allowBackup</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:icon</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@mipmap/ic_launcher</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:label</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@string/app_name</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:roundIcon</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@mipmap/ic_launcher_round</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:supportsRtl</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:theme</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@style/AppTheme</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<meta-<span style="color: rgba(0, 0, 0, 1)">data
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.baidu.lbsapi.API_KEY</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:value</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">申请的开发密钥</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
<activity android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">.MainActivity</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<intent-filter>
<action android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.action.MAIN</span><span style="color: rgba(128, 0, 0, 1)">"</span> />
<category android:name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.category.LAUNCHER</span><span style="color: rgba(128, 0, 0, 1)">"</span> />
</intent-filter>
</activity>
</application>
</manifest></pre>
</div>
<p> </p>
<p> </p>
<p>这块代码可以参照之前在百度开放平台下载的示例代码。</p>
<p>或者可以参照官网的开发指南</p>
<p>http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap</p>
<p>然后需要将项目运行在可联网的真机或者第三方模拟器上</p>
<p><img alt=""></p>
<p> <img src="https://img2020.cnblogs.com/blog/1328191/202004/1328191-20200416214111243-805159067.jpg" alt=""></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
博客园:
https://www.cnblogs.com/badaoliumangqizhi/
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。<br><br>
来源:https://www.cnblogs.com/badaoliumangqizhi/p/12716045.html
頁:
[1]