百度地图定位功能的简单应用

虽然以前了解过百度地图,但是今天突然用到发现原来自己什么都不会,只能先学习一下,根据需求从最简单的开始吧,首先说说地图的定位功能,这里只是实现了一它最简单最基本的功能,仅供初学者参考交流。

有关下载百度地图开发文档下载SDK申请key

需要的SDK下载完以后。将so文件的压缩文件解压出来,把对应架构下的so文件放入自己APP的对应架构下的文件夹中,建议全部放入,程序兼容性会大大提升,将locSDK_5.X.jar文件拷贝到工程的libs目录下。

写好布局,最简单的布局,一个TextView一个Button,如下:

接下来在AndroidManifest.xml的application标签中声明service:

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>
然后增加相应的权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<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" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
设置key,在application标签中加入(这里把key换成自己申请下来的key):

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="key" />  

接下来开始写相应的java代码:
这里就把主要代码贴出来:
	private TextView mLocationResult;
	private Button btn;
	
	public LocationClient mLocationClient = null;    //核心类locationClient 需要注意的是此类只能在主线程中声明而且需要context对象
	public BDLocationListener myListener = new MyLocationListener();  
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mLocationClient = new LocationClient(getApplicationContext());
		mLocationClient.registerLocationListener(myListener);  //注册监听
		
		mLocationResult = (TextView) findViewById(R.id.textView1);  
		btn = (Button) findViewById(R.id.button1);
		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				initLocation();    //设定定位参数
				mLocationClient.start();  //启动定位
			}
		});
	}
	
	private void initLocation() {
		LocationClientOption option = new LocationClientOption();
		option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式
		option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
		option.setScanSpan(0);//设置发起定位请求的间隔时间为5000ms
		option.setIsNeedAddress(true);//返回的定位结果包含地址信息
		option.setNeedDeviceDirect(true);//返回的定位结果包含手机机头的方向
		mLocationClient.setLocOption(option);
	}


<span style="white-space:pre">	</span>//实现接口
	public class MyLocationListener implements BDLocationListener {
		@Override
		public void onReceiveLocation(BDLocation location) {
			if (location == null)
		            return ;
			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());
			} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
				sb.append("\naddr : ");
				sb.append(location.getAddrStr());
			} 
			logMsg(sb.toString());
		}
	}

	/**
	 * 显示获得的定位情况字符串
	 * @param str
	 */
	public void logMsg(String str) {
		try {
			if (mLocationResult != null)
				mLocationResult.setText(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

定位结果:

一个简单的不能再简单的功能,实在没有什么技术含量,仅供初学者学习使用,不喜勿喷。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值