Android实现百度地图定位(墨雪亲测)

本文详细介绍如何在Android项目中集成百度地图定位SDK,包括下载并配置SDK、申请密钥、添加必要的权限及注册信息,并提供了Activity中的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.到百度地图开放平台下载定位SDK:
地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/geosdk-android-download
解压下载的文件,把其中的 armeabi 文件夹拷贝到安卓项目的 libs 目录下,同时把解压得到的文件中的jar文件拷贝到 libs 目录下。

项目右键 -> Properties -> Java Build Path -> Libraries -> add External Jars -> 选择硬盘目录下的jar包文件,然后引入。

再把jar文件直接复制到该项目中。
得到:
这里写图片描述

2.在百度地图开放平台申请密匙。
得到:VncByZSyzFUSFZLlZzpktOBbLgMUKnZl

3.在项目AndroidManifest.xml中添加权限及注册。
权限:

<!-- 这个权限用于进行网络定位 -->  
    <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>  
    <!-- 允许应用读取低级别的系统日志文件 -->  
    <uses-permission android:name="android.permission.READ_LOGS" >  
    </uses-permission> 

注册:类似Activity的注册,其中value=“你申请的密匙”

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="VncByZSyzFUSFZLlZzpktOBbLgMUKnZl" />
 <service  
            android:name="com.baidu.location.f"  
            android:enabled="true"  
            android:process=":remote" >  
        </service>

4.最后在Activity中写代码:

public class MainActivity extends Activity /*implements OnClickListener */{  


    private static final String TAG = "dzt";  
    private TextView mText;  
    private TextView mTextPoi;  
    private LocationClient mLocationClient = null;  
    private BDLocationListener myListener = new MyLocationListener();  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_weather);  
        mLocationClient = new LocationClient(getApplicationContext());
        mLocationClient.registerLocationListener(myListener); // 注册监听函数  
        setLocationOption();  
        mLocationClient.start();// 开始定位  
        //initWidgets(); 
        mText = (TextView) findViewById(R.id.tv_text);  
        mTextPoi = (TextView) findViewById(R.id.tv_text_poi); 
        Button btn1 = (Button) findViewById(R.id.btn_request);
        Button btn = (Button) findViewById(R.id.btn_request_poi);
        if (mLocationClient != null && mLocationClient.isStarted())  
            mLocationClient.requestLocation();  
        else  
            Log.d(TAG, "locClient is null or not started"); 
        if (mLocationClient != null && mLocationClient.isStarted())  
            mLocationClient.requestPoi(); 




    }  


    /** 
     * 设置相关参数 
     */  
    private void setLocationOption() {  
        LocationClientOption option = new LocationClientOption();  
        option.setOpenGps(true);  
        option.setIsNeedAddress(true);// 返回的定位结果包含地址信息  
        option.setAddrType("all");// 返回的定位结果包含地址信息  
        option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02  
        option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms  
        option.disableCache(true);// 禁止启用缓存定位  
        option.setPoiNumber(5); // 最多返回POI个数  
        option.setPoiDistance(1000); // poi查询距离  
        option.setPoiExtraInfo(true); // 是否需要POI的电话和地址等详细信息  
        mLocationClient.setLocOption(option);  
    }  

    public class MyLocationListener implements BDLocationListener {  
        @Override  
        public void onReceiveLocation(BDLocation location) {  
            if (location == null)  
                return;  
            StringBuffer sb = new StringBuffer(256);  
            sb.append("当前时间 : ");  
            sb.append(location.getTime());  
            sb.append("\n错误码 : ");  
            sb.append(location.getLocType());  
            sb.append("\n纬度 : ");  
            sb.append(location.getLatitude());  
            sb.append("\n经度 : ");  
            sb.append(location.getLongitude());  
            sb.append("\n半径 : ");  
            sb.append(location.getRadius());  
            if (location.getLocType() == BDLocation.TypeGpsLocation) {  
                sb.append("\n速度 : ");  
                sb.append(location.getSpeed());  
                sb.append("\n卫星数 : ");  
                sb.append(location.getSatelliteNumber());  
            } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {  
                sb.append("\n地址 : ");  
                sb.append(location.getAddrStr());  
            }  
            mText.setText(sb.toString()); //在TextView中显示地址 
            Log.d(TAG, "onReceiveLocation " + sb.toString());  
        }  

        public void onReceivePoi(BDLocation poiLocation) {  

}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值