百度地图初学三:百度地图开发遇到的问题

来源:互联网 发布:linux修改内核参数 编辑:程序博客网 时间:2024/05/21 14:42
遇到的一些烦心的问题:1.虽然看的网上的视频,且一步步写的代码都没错,但就是有错。如:MapView cannot be resolved to a type,
**方法is undefined,BDLocation显示无法导入等等都是包的问题,在学的时候一定要看好!!选好包再导入就没问题啦,旧的的版本地图的SDK和定位的SDK是分开的,要分别导入才可以,包之类的官网都有,也可以从他的Demo之中导入。
2.真机测试的时候,开了Wifi能定位位置,用流量一直定不了位置,再就是白板一片。当时很纠结,各种找各种查,偏偏网上还没有,于是静下心来去百度地图定位SDK官网,一步步看,终于被我发现啦,在官网上百度地图SDK和定位SDK需要的权限是不一样的!!太坑爹啦。。。
比较下:
这是显示百度地图需要的权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />  <uses-permission android:name="android.permission.USE_CREDENTIALS" />  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <uses-permission android:name="android.permission.INTERNET" />  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  <uses-permission android:name="android.permission.READ_PHONE_STATE" />  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  <uses-permission android:name="android.permission.BROADCAST_STICKY" />  <uses-permission android:name="android.permission.WRITE_SETTINGS" />  <uses-permission android:name="android.permission.READ_PHONE_STATE" />

这是定位所需要的权限:
<!-- 这个权限用于进行网络定位--><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.READ_PHONE_STATE"></uses-permission><!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!-- 访问网络,网络定位需要上网--><uses-permission android:name="android.permission.INTERNET" /><!—SD卡读取权限,用户写入离线定位数据--><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><!--允许应用读取低级别的系统日志文件 --><uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
 
少了这三个:可以根据自己情况添加。
 
—SD卡读取权限,用户写入离线定位数据--> 
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> 
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>   
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
我添加了
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>   
,就解决了不能显示的问题,刚开始学习还是得慢慢来,不能着急,不然会郁闷死,希望帮到和我一样的初学者。。。。好好研究官方Demo,看上边的常见问题。。
还有就是比较困惑的,android4.0之后是不能在主线程中访问网络的,为什么百度地图可以,下面这些:

初始化LocationClient类

此处需要注意:LocationClient类必须在主线程中声明。需要Context类型的参数。Context需要时全进程有效的context,推荐用getApplicationConext获取全进程有效的context
public LocationClient mLocationClient = null; public BDLocationListener myListener =new MyLocationListener();   public void onCreate() { mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类mLocationClient.registerLocationListener( myListener ); //注册监听函数 }
可能是因为这个:发起定位,异步获取当前位置。因为是异步的,所以立即返回,不会引起阻塞。定位结果在ReceiveListener的方法OnReceive方法的参数中返回。
0 0
原创粉丝点击