Android Studio实现百度地图定位

1.注册和获取密钥

获取开发密钥(AK)

获取包名

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.baidupos">

获取SHA1

2.在项目中集成BaiduMap SDK


往工程中添加jar文件
在工程配置中需要将前面添加的jar文件集成到我们的工程中

dependencies {implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'implementation files('libs\\BaiduLBS_Android.jar')testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

3.显示地图

第一步 配置AndroidManifest.xml文件
1.在中加入如下代码配置开发密钥(AK):

        <meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="3uf6CGGgsGPeKWLPBe9R1a86ztgXAAI3" />

2.在布局文件中添加地图容器

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

3.地图初始化

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

在AndroidManifest.xml文件中声明该Application

4.创建地图Activity,管理MapView生命周期

4.显示定位

配置AndroidManifest.xml文件
1.加入如下权限使用声明

<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

2.在Application标签中声明定位的service组件

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

3.开启地图的定位图层

mBaiduMap.setMyLocationEnabled(true);

4.代码

package com.example.baidupos;
import android.app.Activity;
import android.os.Bundle;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;public class MainActivity extends Activity {private MapView mMapView = null;private BaiduMap mBaiduMap;private LocationClient mLocationClient;private BitmapDescriptor mMarker;private boolean ifFrist = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();mLocationClient = new LocationClient(this);MyLocationListener myLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(myLocationListener);//覆盖物 用于显示当前位置mMarker = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_background);mBaiduMap.setMyLocationEnabled(true);LocationClientOption option = new LocationClientOption();//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);option.setOpenGps(true); // 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setScanSpan(1000);option.setIsNeedAddress(true);mLocationClient.setLocOption(option);mLocationClient.start();}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onDestroy() {mLocationClient.stop();mMapView.onDestroy();//mMapView = null;super.onDestroy();}public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {//mapView 销毁后不在处理新接收的位置if (location == null || mMapView == null){return;}MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.latitude(location.getLatitude()).longitude(location.getLongitude()).direction(location.getDirection()).build();mBaiduMap.setMyLocationData(locData);MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, false, mMarker);mBaiduMap.setMyLocationConfiguration(configuration);if (ifFrist) {LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());MapStatus.Builder builder = new MapStatus.Builder();builder.target(ll);builder.zoom(18.0f);mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));//放大层级ifFrist = false;}}}
}

引用

注册和获取密钥
Android Studio配置
显示地图
显示定位

gittee代码:定位

Android Studio实现百度地图定位相关推荐

  1. Android Studio调用百度地图(二):实现地图显示后台定位和步行导航

    先看一下运行效果: 实现功能:后台定位+步行导航(可通过长按屏幕自定义终点,起点为定位点) 后台定位即当程序在后台时依旧执行定位功能,步行导航支持30米-50千米范围内的导航 一 导入SDK并配置相关 ...

  2. Android studio显示百度地图及闪退问题的解决

    Android studio引入百度地图包括解决真机闪退问题 引入百度地图方法 申请百度地图key 百度地图SDK下载即配置 完整代码及部分解释 MainActivity.java AndroidMa ...

  3. Android开发之百度地图定位

    Android开发之百度地图定位 一.效果图 二.下载百度地图SDK 1.打开[百度地图](https://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9% ...

  4. Android开发之百度地图定位打卡

    Android开发之百度地图定位打卡 一.效果图 二.下载百度地图SDK 三.代码实现 1.布局文件(activity_main) 2.布局文件(activity_map) 3.在res文件夹下新建m ...

  5. Android Studio实现百度地图及定位

    文章目录 一.功能需求 二.实现过程 1. 实验环境 2.获取百度开发者KEY 3. 页面设计 4. Java代码实现 三.运行界面展示 四.源码 一.功能需求 根据官方文档,开发百度地图定位APP, ...

  6. 2019-详细Android Studio开发百度地图(5)—百度地图_导航和TTS语音播报的实现

    百度地图_导航和TTS语音播报的实现 前言 从小白一步步开始,很多资源是很久以前的,而且没有操作配套截图和资源分享.现在本踩过了很多坑,现在开发完成后决定重新写一份教程,希望能借此帮助到许多其他有这方 ...

  7. 2019-详细Android Studio开发百度地图(4)—百度地图_路线规划的实现

    百度地图_路线规划的实现 前言 从小白一步步开始,很多资源是很久以前的,而且没有操作配套截图和资源分享.现在本踩过了很多坑,现在开发完成后决定重新写一份教程,希望能借此帮助到许多其他有这方面需求的人. ...

  8. Android开发之百度地图定位以及简单覆盖物的实现

    直接上代码: 先看下效果图: 我这里主要做了三个功能: 1.一秒钟实时定位功能: 2.添加任意经纬度地点到地图上: 3.判断朝阳门是否在本人定位范围1000米内: 百度地图初始化方法: DemoApp ...

  9. Android 轻松实现百度地图定位

    最近在做一地图定位软件,下面分享一下自己在做的过程中遇到的问题,希望对大家有帮助: 首先就是要用百度地图的API需要申请一个Key值,要到百度地图API中申请: http://developer.ba ...

  10. 基于android studio的百度地图(放大缩小搜索功能)

    首先我们需要下载百度SDK包 百度网盘提取码1234 这个复制在这里 还有百度官方的代码也已经打好了. 百度网盘 请输入1234 自行导入.直接复制全部java,之后粘贴在工程里面 这是布局 布局.x ...

最新文章

  1. Android如何使用so文件和Android studio中导入so
  2. [你必须知道的.NET]第二十一回:认识全面的null
  3. React Native的TextInput组件去掉下划线和使用背景图片
  4. oracle雾化试图_Oracle 物化视图 说明
  5. [Python人工智能] 二十九.什么是生成对抗网络GAN?基础原理和代码普及(1)
  6. Maven引入依赖后自动下载并关联源码(Source)
  7. DAY102 - Rest Framework(七)- 手动编写配置文件、分页器和版本控制
  8. Linux常用的挂载远程目录方案使用有感
  9. 华为荣耀9x怎么解账户锁_跟华为毫无关系的荣耀为何不值得买?
  10. QT连接PostSql (小白教程)
  11. php怎样做艺术字体,用ps打造科幻艺术字体
  12. 软件工程——团队答辩
  13. 几何光学学习笔记(23)- 5.6 远心光路
  14. 三极管构成的电流负反馈放大器
  15. 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(二)
  16. 工程师必备硬件EMC设计规范
  17. 请你详细说说类加载流程,类加载机制及自定义类加载器
  18. You_Probably_Dont_Need_RAC
  19. 个人支付宝、微信、云闪付收款
  20. 自己写一个RTOS系统

热门文章

  1. Win10正式版微软官方原版ISO系统镜像下载大全
  2. Java 培训四个月能学会吗?
  3. The end tag “</c:forEach“ is unbalanced
  4. Citrix Receiver 安装指南
  5. pandas 行列转换
  6. MongoDB的用户管理总结
  7. 基于Python爬虫的网易云音乐
  8. 2020中国公关公司30强排行榜(记录)
  9. 因为高考是最相对公平的一次竞争和选拔
  10. Android webview 播放视频及全屏