用百度地图SDK开发的小Demo(二)定位功能

开发环境都配置好之后,就打算先实现最基本的定位功能,这个时候坑又来了,看着文档和自己查阅的资料,勉强的写好了测试定位的代码。

  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多的方法,最后终于解决了。

在模拟器上是无法定位的!!!

用了舍友的小米,给应用添加好权限定位的就成功了~



猜你喜欢

转载自blog.csdn.net/weixin_41127625/article/details/80561400