| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 开发百度地图定位APP,显示出当前位置坐标 -> 正文阅读 |
|
[移动开发]开发百度地图定位APP,显示出当前位置坐标 |
?一.注册和获取秘钥? ??1.获取 SHA1 在获取Android签名证书的sha1值获取使用keytool时,出现了'keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件的错误 ? ? ?? 找到keytool.exe的位置 ? ? ? ? ?获得 SHA1 2.获取项目AK码(百度地图 SDK开发密钥的申请地址为:https://lbs.baidu.com/apiconsole/key) 在我的应用中,查看自己的AK码 ?二.Android Studio配置 官方文档给出的网址:androidsdk | 百度地图API SDK 下载后解压,将解压后libs文件夹下面的文件全部复制到中的libs中 右键libs中的压缩包,选择Add As Library 在? ? ? <meta-data ? ?在? MainActivity: public class MainActivity extends AppCompatActivity { private MapView mMapView; private BaiduMap mBaiduMap; private LocationClient mLocationClient; private TextView mtextView; // 是否是第一次定位 private boolean isFirstLocate = true; // 当前定位模式 private MyLocationConfiguration.LocationMode locationMode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); } else { requestLocation(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: if (grantResults[0] != PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "Without Location Permissions!", Toast.LENGTH_SHORT).show(); finish(); } else { Toast.makeText(this, "Got Location Permissions!", Toast.LENGTH_SHORT).show(); requestLocation(); } break; } } private void requestLocation() { setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = findViewById(R.id.bmapView); //获取文本显示控件 mtextView = findViewById(R.id.text1); // 得到地图 mBaiduMap = mMapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); //定位初始化 mLocationClient = new LocationClient(this); //通过LocationClientOption设置LocationClient相关参数 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000); //设置locationClientOption mLocationClient.setLocOption(option); //注册LocationListener监听器 MyLocationListener myLocationListener = new MyLocationListener(); mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING,true,null,0,0) ); mLocationClient.registerLocationListener(myLocationListener); //开启地图定位图层 mLocationClient.start(); } // 继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapView public class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation location) { //mapView 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } // 如果是第一次定位 LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); if (isFirstLocate) { isFirstLocate = false; //给地图设置状态 mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(ll)); } MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(location.getDirection()).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); //获取经纬度 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("\n经度:" + location.getLatitude()); stringBuilder.append("\n纬度:"+ location.getLongitude()); mtextView.setText(stringBuilder.toString()); } } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onDestroy() { mLocationClient.stop(); mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } } 结果: 代码: |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:23:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |