开发环境都配置好之后,就打算先实现最基本的定位功能,这个时候坑又来了,看着文档和自己查阅的资料,勉强的写好了测试定位的代码。
private void location() { LocationClientOption opt=new LocationClientOption(); opt.setCoorType("bd09ll"); opt.setOpenGps(true); opt.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); LocationClient client=new LocationClient(MainActivity.this,opt); client.registerLocationListener(new BDAbstractLocationListener() {//设置定位监听 @Override public void onReceiveLocation(BDLocation bdLocation) { MyLocationData data=new MyLocationData.Builder().latitude(bdLocation.getLatitude())//用构造器构造data对象 .longitude(bdLocation.getLongitude()) .build(); mBaiduMap.setMyLocationData(data); LatLng latLng=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude()); MapStatusUpdate update= MapStatusUpdateFactory.newLatLng(latLng); mBaiduMap.animateMapStatus(update); BitmapDescriptor icon= BitmapDescriptorFactory.fromResource(R.mipmap.icon); Log.d("tag", "onReceiveLocation: "+bdLocation.getLatitude()+"::"+bdLocation.getLongitude()); InfoWindow info=new InfoWindow(icon,new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude()),0,null); mBaiduMap.showInfoWindow(info); } }); client.start(); }
怀着忐忑的心情点了Run,没有报错,感觉一切都在我的掌握之中,当我点了我写的定位按钮的时候,发现MapView里面依旧是伟大的天安门广场,原来开启定位服务还要在Manifest里面配置一段代码。
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service>
配置好了之后在运行,点击按钮终于有反应啦,但是屏幕移动到一片全蓝色的区域,放大一看,我的定位定到了大西洋。
打印坐标日志发现
onReceiveLocation: 4.9E-324,4.9E-324
他们的经纬度都是一样的,
试了N多的方法,最后终于解决了。
在模拟器上是无法定位的!!!
用了舍友的小米,给应用添加好权限定位的就成功了~