android调用百度地图(1)新手环境搭建基础应用教程

一、申请百度账号,建立应用,获得key值
申请网址:http://lbsyun.baidu.com/apiconsole/key
然后点击控制台,创建属于你自己的应用

(ak这里我不方便透露,就不发出来了)
点击图片中的设置一栏,就会进入另一个页面,这里是安全码的生成页面,按照指示填相应的信息即可。
1)获取sha1值方法:电脑打开cmd(win+r),然后按照图中所示进行输入就可以获取sha1的值(密码默认初始为android)。


2)包名获取
包名去AndroidMainifest.xml中复制

在输入安全码后,点击“确定”完成应用的配置工作,会得到一个创建的Key。
二、下载sdk
下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
进去之后选择自定义下载,勾选我们所所需要的功能进行下载,选择开发包下载。

下载解压如图所示:

三、配置环境
我的开发工具以及环境:
androidstudio:3.4.2
电脑版本:win10专业版
首先新建一个空的android项目:

切换project模式,复制我解压的文件夹下面的
复制到我们的工程目录下面的libs下,然后双击,选择add as Library那个选项。然后弄完如下所示:

接着切换android模式:建立以下工程目录结构:

配置完之后在我们的AndroidMainifest.xml中加入Key。代码如下:
在application中添加开发密钥

<application             
 <meta-data android:name="com.baidu.lbsapi.API_KEY"android:value="申请的key" /> </application>

添加权限:

//获取设备网络状态,禁用后无法获取网络状态
    <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.ACCESS_WIFI_STATE" />
    //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //这个权限用于进行网络定位
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    //这个权限用于访问GPS定位
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    //获取统计数据
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    //使用步行AR导航,配置Camera权限
    <uses-permission android:name="android.permission.CAMERA" />
    //程序在手机屏幕关闭后后台进程仍然运行
    <uses-permission android:name="android.permission.WAKE_LOCK" />

添加百度地图服务
在mainfest的application标签中配置地图服务

    <service
        android:name="com.baidu.location.f"
        android:enabled="true"
        android:process=":remote" ></service>

至此,环境搭建完成,运行没有报错即可。

四、基础应用

在xml文件中加入初始化控件的代码:

<TextView android:text="百度地图"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="wrap_content"
    android:textSize="25sp"
    android:id="@+id/textView" />
<com.baidu.mapapi.map.MapView
    android:id="@+id/baiDuMv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true" />
在mainACtivity的OnCreate方法中加入以下初始化代码:
SDKInitializer.initialize(getApplicationContext());//初始化地图控件

MainActivity完整代码:

package com.example.mysql_project;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

public class MainActivity extends AppCompatActivity {
private MapView mMapView = null;
private BaiduMap mBaiduMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SDKInitializer.initialize(getApplicationContext());//初始化地图控件
    setContentView(R.layout.activity_main);
    initView();
}

private void initView() {
    //获取地图控件引用
    mMapView = (MapView) findViewById(R.id.bmapView);
    //获取百度地图
    mBaiduMap = mMapView.getMap();
    //普通地图
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
    //开启交通图
    mBaiduMap.setTrafficEnabled(true);
    //卫星地图
    //mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
}

@Override
protected void onStart() {
    super.onStart();
}

@Override
protected void onStop() {
    super.onStop();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
    mMapView.onDestroy();

}

@Override
protected void onPause() {
    super.onPause();
    //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
    mMapView.onPause();
}

@Override
protected void onResume() {
    super.onResume();
    //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
    mMapView.onResume();
}

}
至此,初步使用完成。点击运行查看一下效果吧,后续将会持续更新。

posted @ 2020-02-23 18:48  jee-cai  阅读(90)  评论(0编辑  收藏  举报