我用的是自个8.0的手机,我碰到的是动态权限问题,AndroidManifest里面权限都加了,输出日志得到的经纬度如
下代码
//经纬度对象5/11 LatLng ll = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude()); Log.i(TAG, "经纬度LatLng:" + ll);
结果为:4.9E-324,4.9E-324,脸黑非洲附近,哈哈哈
上代码,如下代码贴在要使用定位之前就行了
//监听授权 List<String> permissionList=new ArrayList<>(); if (ContextCompat.checkSelfPermission(BaiduMapT1.this, Manifest. permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(BaiduMapT1.this, Manifest. permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(BaiduMapT1.this, Manifest. permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!permissionList.isEmpty()){ String[] permissions=permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(BaiduMapT1.this,permissions,1); }else { initLocation(); // requestLocation();
}
//下面这行是开启定位方法,上面代码是重点
public void initLocation() { // 定位选项 LocationClientOption option = new LocationClientOption(); option.setCoorType("bd09ll"); // 设置是否需要地址信息,默认为无地址 option.setIsNeedAddress(true); option.setIsNeedLocationDescribe(true); option.setIsNeedLocationPoiList(true); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); option.setOpenGps(true); option.setScanSpan(1000); mLocClient.setLocOption(option); mLocClient.start(); }百度地图