百度地图定位

首先最重要的当然是去官方下载相关的sdk文件,以及导入的项目中。再申请秘钥,不同APP不同的秘钥。这里不再做详细描述了。

  • 当导入包以后,就是配置AndroidManifest.xml文件了,首先是需要相关权限,然后配置秘钥。
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  • 还有注册百度服务
        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
            <intent-filter>
                <action android:name="com.baidu.location.service_v2.2" >
                </action>
            </intent-filter>
        </service>
  • 别忘了还要配置秘钥
       <!-- meta-data需要写在application中 -->
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="这里填写你从百度地图官网申请到的秘钥" />
  • 等导完包、配置完AndroidManifest.xml文件后就是进行代码的定位了

    重中之中,需要在Activity绑定页面,也就是setContentView(R.layout.main);之前需要对百度sdk
    进行注册,就是SDKInitializer.initialize(getApplicationContext());这么一行代码,否则会报错。

  • 接下来就需要实例化百度地图定位非常关键的一个类LocationClient。

LocationClient mlocationClient = new LocationClient(getApplicationContext());
  • 再使用LocationClientOption类对LocationClient进行一些属性的配置
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系
        int span = 1000;
        option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要
        option.setOpenGps(true);// 可选,默认false,设置是否使用gps
        option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
        option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
        option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
        option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集
        option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要
        mlocationClient.setLocOption(option);//添加设置
  • 最后就是定位的监听Listener,通过location就可以点出人任意想要的定位城市、经纬度等相关信息
BDLocationListener bdLocationListener = new BDLocationListener() {

        @Override
        public void onReceiveLocation(BDLocation location) {
            Toast.makeText(MainActivity.this,
                    arg0.getLatitude() + "/" + arg0.getLongitude(), 100).show();
        }
    };
  • 当然,还需要给定位类绑定监听才行
  mlocationClient.registerLocationListener(bdLocationListener);

当然不能忘了要启动服务,我就是有一回忘了启动服务,纠结了很久,需要在OnStart()和OnDestory()方法中对定位服务分别启动与停止。代码如下:

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        //启动定位服务
        if (!mlocationClient.isStarted()) {
            mlocationClient.start();
        }

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        //停止定位服务
        mlocationClient.stop();
    }
  • 完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值