android studio 百度地图(一)

1.前提:使用方法,就是直接去百度下载demo,然后看里面的源码,就可以做好多事情了

1.获取SHA1

只要填一个就可以了
在这里插入图片描述

2.步骤:

1.

导入包

2.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission
        android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission
        android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- //获取设备网络状态,禁用后无法获取网络状态 -->
    <uses-permission
        android:name="android.permission.MANAGE_DOCUMENTS"
        tools:ignore="ProtectedPermissions" /> <!-- //网络权限,当禁用后,无法进行检索等相关业务 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- //读取设备硬件信息,统计数据 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- //读取系统信息,包含系统版本等信息,用作统计 -->
    <uses-permission android:name="android.permission.VIBRATE" /> <!-- //获取设备的网络状态,鉴权所需网络代理 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- //允许sd卡写权限,需写入地图数据,禁用后无法显示地图 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- //允许sd卡读权限,需读取地图数据,禁用后无法显示地图 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- //获取统计数据 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- //鉴权所需该权限获取进程列表 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- //使用步行AR导航,配置Camera权限 -->
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <!-- //网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- //GPS定位 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<!--百度地图-->
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="ZAyhcOPzfFnxGG9TZzNZnwDazhYqKTnO" />

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

3.

在这里插入图片描述
在这里插入图片描述

4.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

    <!--计步-->

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <FrameLayout
        android:id="@+id/FL_address"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />
    <!--定位-->
    <Button
        android:background="@drawable/my_address"
        android:id="@+id/bt"
        android:layout_weight="1"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/button"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_marginBottom="10dp"/>

    <Button
        android:layout_margin="5dp"
        android:background="@drawable/shape_normal"
        android:alpha="0.7"
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="卫星视图"
        app:layout_constraintBottom_toTopOf="@+id/buttons"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/buttons"/>

    <Button
        android:layout_margin="5dp"
        android:background="@drawable/shape_normal"
        android:alpha="0.8"
        android:id="@+id/buttons"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="普通视图"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/bmapView"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

3.导航功能的实现

需求:根据客户输入的地址得到导航路线

需要用到的方法

1.将地址转换为经纬度

1.实现接口,重写方法

//接口
public class GeoCoderDemo extends AppCompatActivity implements OnGetGeoCoderResultListener {

重写方法:
在这里插入图片描述

2.初始化GeoCoder,并为其设置专门的监听

// 初始化搜索模块,注册事件监听
        mSearch = GeoCoder.newInstance();//初始化地理编码器
        mSearch.setOnGetGeoCodeResultListener(this);//为地理编码器设置专用监听

3.在监听里执行

//根据客户输入得到目的地经纬度
                                    mSearch.geocode(new GeoCodeOption()
                                            .city(editEndCity.getText().toString())//城市EditText
                                            .address(editEndAddress.getText().toString()));//地址EditText

4.得到经纬度

在这里插入图片描述

最后:反思总结

1.敲代码时间不能太久,不然会没精力,效率下降
最好在15到50分钟之间

猜你喜欢

转载自blog.csdn.net/sunweihao2019/article/details/107816238