博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中百度地图开发细节综述
阅读量:5154 次
发布时间:2019-06-13

本文共 4232 字,大约阅读时间需要 14 分钟。

此相关细节以Android Studio为开发工具

1.创建百度地图可用KEY,关键之创建SHA1:

新手推荐先下载官方Demo,导入项目,Android Studio导入BaiduMapsApiASDemo,运行起来会报key错误,这里需要你去申请key。

Demo的APP根目录有debug.keystore,也可以使用自己的。

创建方法:

1)点开Android Studio的Terminal

2)找到jdk中keytool.exe(不要找错了,非jre中)

3)在Terminal中定位到keytool.exe文件位置,输入执行命令:

定位到keytool.exe文件

D:\GithubWorkSpace\BaiduMapsApiASDemo>cd D:\SoftWork\Java\jdk1.8.0\bin

输入指令生成sha1等相关参数:

D:\SoftWork\Java\jdk1.8.0\bin>keytool -v -list -keystore D:\GithubWorkSpace\BaiduMapsApiASDemo\app\debug.keystore

最终生成如下:

红框内容就是生成百度地图开发key的关键元素SHA1,复制粘贴过去,继续填完其他元素即可生成你自己的KEY。

 

2.关于参照Demo开发定位,为什么Demo上可以快速定位,自己新建就不可以,网上推荐的方法基本都是添加Service,这个治标不治本。

大部分原因是因为Demo是以targetSdkVersion 22编译的,这是android 5.1的,这个版本在配置文件中写定位权限就可以了;而现在的开发,

只要不是那种万年不变的老古董式开发基本都更新升级了编译SDK,那么新建项目基本上很少有低于sdk 23(android 6.0)的,问题就出在

这里,你把Demo内容完全Copy过来也不能定位,那是因为自Android 6.0起进行了权限分类与升级管理,定位权限还需要单独申请,申请

成功了你会发现立马定位成功,哈哈。

这里推荐一个简单的权限申请jar:

compile 'pub.devrel:easypermissions:1.0.0' 具体代码:
1 public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {  2   3   4     // 定位相关  5     LocationClient mLocClient;  6     public MyLocationListenner myListener = new MyLocationListenner();  7     private TextView mCity;  8     public static final int REQUEST_GPS = 111;  9    10  11     @Override 12     public void onCreate(Bundle savedInstanceState) { 13         super.onCreate(savedInstanceState); 14         setContentView(R.layout.activity_main); 15  16         gpsTask(); 17          18         mCity = (TextView) findViewById(R.id.text_city); 19         20     } 21  22  23     @AfterPermissionGranted(REQUEST_GPS) 24     public void gpsTask() { 25         if (EasyPermissions.hasPermissions(this, Manifest.permission.ACCESS_FINE_LOCATION)) { 26             myLocalAddress(); 27         } else { 28             // Ask for one permission 29             EasyPermissions.requestPermissions(this, "需要请求定位权限", 30                     REQUEST_GPS, Manifest.permission.ACCESS_FINE_LOCATION); 31         } 32     } 33  34     private void myLocalAddress() { 35         // 定位初始化 36         mLocClient = new LocationClient(this); 37         mLocClient.registerLocationListener(myListener); 38         LocationClientOption option = new LocationClientOption(); 39         option.setOpenGps(true); // 打开gps 40         option.setCoorType("bd09ll"); // 设置坐标类型 41         option.setScanSpan(1000); 42         option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要 43         mLocClient.setLocOption(option); 44         mLocClient.start(); 45     } 46  47      48     @Override 49     public void onPermissionsGranted(int requestCode, List
perms) { 50 51 } 52 53 @Override 54 public void onPermissionsDenied(int requestCode, List
perms) { 55 if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { 56 new AppSettingsDialog.Builder(this).build().show(); 57 } 58 } 59 60 @Override 61 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 62 super.onRequestPermissionsResult(requestCode, permissions, grantResults); 63 EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); 64 } 65 66 /** 67 * 定位SDK监听函数 68 */ 69 public class MyLocationListenner implements BDLocationListener { 70 71 @Override 72 public void onReceiveLocation(BDLocation location) { 73 // map view 销毁后不在处理新接收的位置 74 if (location == null) { 75 return; 76 } 77 78 mCity.setText(location.getCity()); 79 80 } 81 82 public void onReceivePoi(BDLocation poiLocation) { 83 } 84 } 85 86 @Override 87 protected void onPause() { 88 89 super.onPause(); 90 } 91 92 @Override 93 protected void onResume() { 94 super.onResume(); 95 } 96 97 @Override 98 protected void onStop() { 99 super.onStop();100 }101 102 @Override103 protected void onDestroy() {104 // 退出时销毁定位105 mLocClient.stop();106 super.onDestroy();107 }108 }

 

转载于:https://www.cnblogs.com/ponos/p/8309180.html

你可能感兴趣的文章
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>