关于百度定位的使用及错误

关于百度定位的问题:

首先需要导入locSDK_4.2.jararmeabi/libBaiduMapSDK_v3_0_0.soliblocSDK4d.so

然后实例化LocationClient对象,并为该对象设置属性,如精度,定位类型,定位间隔如下:

LocationClientOption option = new LocationClientOption();

option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式

//coorType类型如下:

//bd09ll

//bd09

//gcj02

option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02

int span=1000;

option.setScanSpan(span);//设置发起定位请求的间隔时间为5000ms

option.setIsNeedAddress(true);

mLocationClient.setLocOption(option);

 

上述属性的值,见百度地图定位 API

地址:http://developer.baidu.com/map/index.php?title=android-locsdk/geosdk-android-download

 

之后需要设置返回结果监听,如下:

   mMyLocationListener = new MyLocationListener();

mLocationClient.registerLocationListener(mMyLocationListener);

 

/**

 * 实现实位回调监听

 */

public class MyLocationListener implements BDLocationListener {

 

@Override

public void onReceiveLocation(BDLocation location) {

// Receive Location

double latitude = location.getLatitude();

double longtitude = location.getLongitude();

if (lastPoint != null) {

if (lastPoint.getLatitude() == location.getLatitude()

&& lastPoint.getLongitude() == location.getLongitude()) {

BmobLog.i("两次获取坐标相同");

// 若两次请求获取到的地理位置坐标是相同的,则不再定位

mLocationClient.stop();

return;

}

}

lastPoint = new BmobGeoPoint(longtitude, latitude);

//System.out.println("位置:"+latitude+":"+longtitude);

}

}

 

 

之后可以调用 LocationClientstart()方法开始定位,

但光是这样是没办法完成定位的,我们可以进行测试,但进行定位监听无法接收到事件,或者说在进行start()方法后,没有开始定位。

 

关于这点我做了很多尝试,引入了几乎所有的权限,但却无法使用,于是去看了百度定位的demo,发现在其清单文件中写了一个service定义,如下:

       <service

            android:name="com.baidu.location.f"

            android:enabled="true"

            android:process=":remote" >

            <intent-filter>

                <action android:name="com.baidu.location.service_v2.2" >

                action>

            intent-filter>

        service>

 

service并不存在于代码中,而是定位包中的,我在自己的项目中也加入了这个service,之后就可以进行定位了,原因未知

你可能感兴趣的:(android)