首先申请百度地图的key,同时下载库文件和jar包截图如下:
清单文件添加权限如下:
<!-- gps -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- wifi -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 网络的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 离线包 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 获取手机信息 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
在清单文件中添加百度的service:
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
在Activity中定位:
1、在onCreate方法中创建BMapManager对象
manager = new BMapManager(getApplicationContext());
2、初始化BMapManager进行授权验证
manager.init(ConstantValue.KEY, new MKGeneralListener()
并实现两个方法 @Override
public void onGetPermissionState(int iError) {
// 授权验证
if (iError == MKEvent.ERROR_PERMISSION_DENIED) {
Toast.makeText(getApplicationContext(), "验证失败", 0).show();
}
}
@Override
public void onGetNetworkState(int iError) {
// 网络状态
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
Toast.makeText(getApplicationContext(), "无网络", 0).show();
}
}
3、在onCreate方法是中实现定位
myListener = new MyListener();
mLocationClient = newLocationClient(getApplicationContext());
mLocationClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setAddrType("all");返回的定位结果包含地址信息
option.setCoorType("bd09ll");返回定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);设置发起定位请求的间隔时间为5000ms
option.disableCache(true);禁止启用缓存定位
mLocationClient.setLocOption(option);
实现监听接口
class MyListener implements BDLocationListener {
//接受定位数据
@Override
public void onReceiveLocation(BDLocation result) {
if (result != null) {
//创建经纬度坐标对象
LocationData data = new LocationData();
//获取到经纬度坐标
data.latitude = result.getLatitude();
data.longitude = result.getLongitude();
//获取定位的具体地址字符串
String addrStr = result.getAddrStr();
Toast.makeText(getApplicationContext(),"地址:"+addrStr, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "定位不成功", 0).show();
}
}
@Override
public void onReceivePoi(BDLocation arg0) {
// TODO Auto-generated method stub
}
}