使用百度地图SDK,可以查看地图信息,对地图进行放大查看,或者缩小查看

一、百度API

百度地图API:http://developer.baidu.com/map/

二、搭建地图环境

1、申请百度地图的key

2、下载对应功能的sdk

3、新建一个工程导入sdk到lib里面

 1、申请百度地图key

点击  http://lbsyun.baidu.com/apiconsole/key

进入key申请页面如下图,然后点击“创建应用”

  点击创建应用后,进入如下图,应用名称可以随便写,应用类型选Android SDK

发布版SHA1的获取方法:

(本人Windows环境下)

win+r 输入cmd,打开dos窗口

1、cd jdk的bin目录下 如我的是  cd C:\Program Files\Java\jdk1.8.0_201\bin

2、找到签名文件存放的目录(如果没有生成的,先生成签名文件,我的签名文件是android.jks)所在目录是D:\android.jks

3、输入命令 C:\Program Files\Android\Android Studio\jre\jre\bin\keytool.exe -list -keystore D:\android.jks

       输入命令如上图,如果没有设置密码则可以直接点击回车,如果设置密码了那就是key的密码

开发版SHA1的获取方法和发布版SHA1的获取方法的唯一不同的是命令是

三、创建Androidstudio项目

按照http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio这里面的步骤来创建一个项目

我的项目目录

1、下载开发包,我是下载了以下几个sdk开发包,根据自己的需求来下载对应的sdk

2、将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理)

1、添加jar文件
     打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:
     Androidstudio1.png
2、添加so文件
     有两种方法可以往项目中添加so文件。
     方法一:
    在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:
      Androidstudio3.png      
     在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:

sourceSets {
           main {
               jniLibs.srcDir 'libs'
           }
    }

注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。

3、往工程中添加jar文件

  1、菜单栏选择File -> Project Structure
      2、在弹出的Project Structure对话框中选中左侧的Modules列表下的app目录,然后点击右侧页面中的Dependencies选项卡。如图:
       Androidstudio6.png
      3、点击左下角加号“➕”选择Jar dependency,然后选择要添加的jar文件即可(此处为我们拷贝至libs目录下的BaiduLBS_Android.jar) 结果如图:
        Androidstudio7.png

  项目所涉及到的代码‘

activity_main.xml文件的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical" >
    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />

</LinearLayout>

app文件下的build.gradle文件的代码

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.wingtech_pc.test1"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/BaiduLBS_Android.jar')
}

新建一个Java类,DemoApplication

package com.example.wingtech_pc.test1;

import android.app.Application;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;

public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

建完了DemoApplication类需要在AndroidManifest.xml文件添加android:name=".DemoApplication"

AndroidManifest.xml文件的代码,加了meta-data标签,指明了key的值,即刚申请到的AK值,还有百度地图相关的权限指定

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

    <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"
        android:name=".DemoApplication">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="5na2xAAarPEicuy4GEwFGydTLirVrgig" />
    </application>
    <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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" />
</manifest>
MainActivity.java的代码:
package com.example.wingtech_pc.test1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.baidu.mapapi.map.MapView;

public class MainActivity extends AppCompatActivity {
    private MapView mMapView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
}

最终运行结果:

 本文章参照了百度地图的官方文档和https://blog.csdn.net/qq_26787115/article/details/50358037

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐