在前面的一篇中我们看到了关于GPS的状态检测以及开启和关闭的方法实现,现在在这里将继续跟随GPS定位的脚步向大家展示采用【百度定位】的SDK像大家展示如何定位到自身从而获取到百度坐标的经纬度;
第一步:到百度地图的网站(http://developer.baidu.com/map/geosdk-android-download.htm)下载需要版本的SDK以及jar包;
第二步:到百度的地址(http://lbsyun.baidu.com/apiconsole/key?application=key)申请百度地图开发相关的密钥key值,这里我们采用的是移动端开发,所以需要注意选取应用类型为,其他的按照相应的设置即可,需要获取到开发工具的MD5码并填入;
第三步:我们在下载到SDK包之后我们会发现其中存在libs文件夹,我们需要将其中的jar文件导入到我们项目下的lib中如图:
第四步:经过我们的以上三个步骤我们做好了开发之前的所有的准备工作,下面我们就可以进入相关的开发过程中了,首先我们需要在我们项目AndroidManifest.xml中加入一个service,以实现我们对百度定位运行的实现,如下:
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
第四步:在我们经过上面的四部操作之后我们就可以在我们的.java文件中去实现我们的相关的定位实现了,相关代码实现如下:
①
// 百度地图定位需要的变量...
public LocationManager locationManager;
public LocationClient mLocationClient;
public BDLocation locationString = null;
public BDLocationListener myListener = new MyLocationListener();
②
/*---------------------------------GPS管理器-------------------------------------*/
locationManager = (LocationManager) getApplicationContext()
.getSystemService(Context.LOCATION_SERVICE);
// 声明LocationClient类
mLocationClient = new LocationClient(getApplicationContext()); //
mLocationClient.registerLocationListener(myListener); //myListener自行定义的实现类
mLocationClient.setAK("XXXXXXXXXXX"); //这里的xxxx需要填入的就是我们在百度获取到的key值
③
// 百度地图定位启动
public void startBauDuLocation() {
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setAddrType("all");// 返回的定位结果包含地址信息
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(1000);// 设置发起定位请求的间隔时间为5000ms
option.disableCache(true);// 禁止启用缓存定位
option.setPoiNumber(1); // 最多返回POI个数
option.setPoiDistance(1000); // poi查询距离
option.setPoiExtraInfo(false); // 是否需要POI的电话和地址等详细信息
mLocationClient.setLocOption(option);
mLocationClient.start();
// 定位结束之后做页面的初始化工作
}
在上面的这个方法中是实现了对百度定位相关的信息获取配置,对齐的详细注释可见...
④
// 定位信息 以及周边POI信息查询
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
locationString = location;
if (location == null)
return;
StringBuffer sb = new StringBuffer(256);
sb.append(location.getLatitude()); // y
sb.append(location.getLongitude()); // x
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) {
}
Content.localAddr = location.getCity();
sb.append("\n地址 : ");
sb.append(location.getCity());
Log.i("定位信息", sb.toString());
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
这里的方法是对BDLocationListener方法的继承实现,其中通过location.getLatitude()、location.getLongitude()和location.getCity()简单实现了对位置坐标经纬度以及地址的获取;
第五步:完成了以上的四步之后就基本完成了百度地图定位所需的所有的代码实现,我们只需要在我们需要用到的定位地点调用方法startBauDuLocation();就可以实现对百度定方法的开启和实现,其中就可以获取到相关的经纬度和详细地理位置信息;
到这里通过使用【android 定位SDk】的方法去实现的百度地图的定位基本完成了,这样就可以获取到经纬度以及相关的所有信息了.....
下一篇将会讲述的是对于在android中耗时操作所需要做出的处理;