百度地图视图实现 ---Android

百度地图视图实现 —Android (AS)

在这里插入图片描述

环境准备


百度地图官方开发文档

注册KEY

快捷获取 包的 SHA1
在这里插入图片描述
选中signingReport 运行后 可以在Build结果中看到生成的SHA1等信息。
在这里插入图片描述
这里有一个问题。
新版本的AS初始可能不会生成Task文件,同时也不会有signingReport的选项。

这是需要手动将 红线处取消选中 刷新Gradle 后 task文件自动生成。
在这里插入图片描述

导入BaiduMap SDK

将下载的SDK文件后解压导入到libs文件夹 (C-V 就行)

note:不是解压后的文件夹 是将BaiduLBS_Android.jar及其同目录下的文件导入到libs

在这里插入图片描述

在build.gradle中添加如下内容:

	···
	sourceSets {
           main {
               jniLibs.srcDir 'libs'
           }
    }
    ···
dependencies {
	···
    implementation files("libs/BaiduLBS_Android.jar")
    ···
}

note:有两个build.gradle 选择Module
在这里插入图片描述

代码实现


权限获取

AndroidManifest.xml application 标签外 添加如下内容(根据需求选择):

    <!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!-- 这个权限用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

初始化百度地图服务

手动创建一个application类用于初始化SDK

public class DemoApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SDKInitializer.initialize(this);
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

注册 后台服务applicationKey值

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

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

实现显示

设置 位置监听

    public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            if (location == null || mapView == null){
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    .direction(location.getDirection()).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
        }
    }

手动添加 MapView视图

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:clickable="true">
    </com.baidu.mapapi.map.MapView>

初始化View

    MapView mapView=null;
    LocationClient mLocationClient=null;
    BaiduMap mBaiduMap=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		// 获取View
        mapView=findViewById(R.id.bmapView);

        // 获取BaiduMap类
        mBaiduMap=mapView.getMap();

        mLocationClient = new LocationClient(this);

        // 通过LocationClientOption设置LocationClient相关参数
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);

        mLocationClient.setLocOption(option);

        // 配置模式
        MyLocationConfiguration myLocationConfiguration=new MyLocationConfiguration(
        		// 定位图层显示方式
                MyLocationConfiguration.LocationMode.FOLLOWING, // 跟随位置显示
                // 是否允许显示方向信息
                false,
                // 用户自定义定位图标
                null,
                // 精度圈填充颜色
                0xAAFFFF88,
                // 精度圈边框颜色
                0xAA00FF00
        );
        mBaiduMap.setMyLocationConfiguration(myLocationConfiguration);
        mBaiduMap.setMyLocationEnabled(true);

		// 设置位置监听
        MyLocationListener myLocationListener = new MyLocationListener();
        mLocationClient.registerLocationListener(myLocationListener);
        mLocationClient.start();
    }

地图调试

AVD 提供了虚拟Location(虚拟GPS地址)的功能,我们可以通过设置Location选项卡的内容来修改AVD的GPS坐标。如下图所示:
在这里插入图片描述

此外,也提供了导入GPX和KML文件来修改Location的功能。

项目分享到了Github:

LBS

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值