Android中应用百度地图API开发地图APP实例-显示百度地图

etzt 2020-04-16

场景

效果

Android中应用百度地图API开发地图APP实例-显示百度地图

在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY

http://lbsyun.baidu.com/index.php

申请API_KEY

登录百度开放平台后找到控制台下的应用管理-创建应用

Android中应用百度地图API开发地图APP实例-显示百度地图

依次输入应用名,应用类型选择Android SDK

Android中应用百度地图API开发地图APP实例-显示百度地图

然后下面需要输入发布版SHA1和包名

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

获取应用SHA1

首先来到.Android文件所在的位置,默认位置如下

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

如果修改过就要到修改的路径下。

AndroidStudio修改默认C盘配置文件夹(.android.gradle.AndroidStudio)以及修改后避免踩的坑:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103791948

我这里是修改过,所以这里的路径是在D:\Android

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

在此路径下打开命令行窗口。

这里采用使用JDK自带的keytool工具生成

keytool默认路径:C:\Program Files\Java\jdk1.8.0_181\bin

Android中应用百度地图API开发地图APP实例-显示百度地图

然后将keytool.exe拖到上面打开的.Android所在路径命令行窗口中,然后再后面输入

-list -v -keystore debug.keystore

回车。然后提示输入密钥库命令,直接回车

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

然后就可以在证书指纹中获取SHA1

Android中应用百度地图API开发地图APP实例-显示百度地图

 Android中应用百度地图API开发地图APP实例-显示百度地图

然后再回到百度开放平台点击提交。就可以获取开发密钥了。

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

获取Android地图SDK

然后再回到百度开放平台中开发文档下的Android开发下Android地图SDK

Android中应用百度地图API开发地图APP实例-显示百度地图

然后选择自定义下载

Android中应用百度地图API开发地图APP实例-显示百度地图

然后这里只勾选几个基本功能,具体功能根据自己需求勾选,然后点击下方的开发包和示例代码进行下载

Android中应用百度地图API开发地图APP实例-显示百度地图

项目中集成SDK

使用AndroidStudio新建项目,将项目视图由Android切换为Project

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

这样就会显示libs目录,然后解压上面下载的开发包,可以看到其下面libs目录下两个jar包,将其复制到项目的lib下

Android中应用百度地图API开发地图APP实例-显示百度地图

然后选中这两个jar包右键Add As Library,添加到库

Android中应用百度地图API开发地图APP实例-显示百度地图

 Android中应用百度地图API开发地图APP实例-显示百度地图

然后在src/main下新建JNIlibs目录

Android中应用百度地图API开发地图APP实例-显示百度地图

然后将上面SDK下libs下的所有目录复制到此目录下

Android中应用百度地图API开发地图APP实例-显示百度地图

Android中应用百度地图API开发地图APP实例-显示百度地图

然后将项目切换回Android视图下,打开activity_main.xml修改布局文件

将布局修改为相对布局,并添加百度地图组件,并设置id

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

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

</RelativeLayout>

然后来到MainActivity.java中,首先声明地图组件然后再onCreate方法中初始化地图SDK,注意初始化地图SDK

的代码要放在setContentView的代码前。

然后还需要分别设置地图组件的声明周期。

package com.badao.baidumap;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;

public class MainActivity extends AppCompatActivity {

    private MapView mapView;//声明地图组件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化地图SDK
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        mapView = (MapView) findViewById(R.id.bmapview);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
        mapView = null;
    }

    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }
}

然后打开mainfests下的AndroidManifest.xml

首先添加meta-data标签,内容如下

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="申请的开发密钥"/>

然后进行权限的声明。完整示例代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.badao.baidumap">

    <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="申请的开发密钥"/>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这块代码可以参照之前在百度开放平台下载的示例代码。

或者可以参照官网的开发指南

http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap

然后需要将项目运行在可联网的真机或者第三方模拟器上

Android中应用百度地图API开发地图APP实例-显示百度地图

 Android中应用百度地图API开发地图APP实例-显示百度地图

相关推荐