百度地图开发之定位功能

    |     2015年12月25日   |   百度地图   |     0 条评论   |    1304

地图功能在人们的日常生活中应用的非常广泛,当我们想去某个地方的时候总会先查下地图,手机地图功能应用更加广泛,它实现了我们随时随地查看位置信息的目的。这里我们来学习下如何通过百度地图API实现手机地图定位功能.

首先们找到百度地图应用编程开发地址: http://developer.baidu.com/map  ,选择你想开发的平台,这里选Android。

接着进入Android定位功能模块,   按照其它步骤一步一步实现即可.

1. 获取密钥, 参看官方文档http://developer.baidu.com/map/index.php?title=androidsdk/guide/key

2.下载开发工具包.  注意: .so文件和jar包版本

3. AndroidManifest文件中写入相当信息

1>在application标签下加入

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="你申请的Key" />

2>加入定位服务

<service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote"></service>

3>相关权限

声明使用权限

<!-- 这个权限用于进行网络定位-->
<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>

4.编写代码
{
        LocationClient  mLocationClient = new LocationClient(this.getApplicationContext());

        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置定位模式
        option.setCoorType("gcj02");//返回的定位结果是百度经纬度,默认值gcj02
        option.setScanSpan(1000);//设置发起定位请求的间隔时间为5000ms
        option.setIsNeedAddress(true);
        mLocationClient.setLocOption(option);
        mLocationClient.start();
       
        mLocationClient.registerLocationListener(new BDLocationListener() {
            @Override
            public void onReceiveLocation(BDLocation location) {
                Log.i("tag", "onReceiveLocation >>>>>>>>>>>>");
                //Receive Location
                StringBuffer sb = new StringBuffer(256);
                sb.append("time : ");
                sb.append(location.getTime());
                sb.append("\nerror code : ");
                sb.append(location.getLocType());
                sb.append("\nlatitude : ");
                sb.append(location.getLatitude());
                sb.append("\nlontitude : ");
                sb.append(location.getLongitude());
                sb.append("\nradius : ");
                sb.append(location.getRadius());
                if (location.getLocType() == BDLocation.TypeGpsLocation) {
                    sb.append("\nspeed : ");
                    sb.append(location.getSpeed());
                    sb.append("\nsatellite : ");
                    sb.append(location.getSatelliteNumber());
                    sb.append("\ndirection : ");
                    sb.append("\naddr : ");
                    sb.append(location.getAddrStr());
                    sb.append(location.getDirection());
                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
                    sb.append("\naddr : ");
                    sb.append(location.getAddrStr());
                    //运营商信息
                    sb.append("\noperationers : ");
                    sb.append(location.getOperators());
                }
                logMsg(sb.toString());
                Log.e("tag", sb.toString());
            }
        });
    }

最新示例 参见官方文档

转载请注明来源:百度地图开发之定位功能
回复 取消