百度定位到经纬度,地址

package com.example.lenovo.maptest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

public class LocatActivity extends Activity {
public static final String TAG = LocatActivity.class.getSimpleName();
private TextView locationInfoTextView = null;
private Button startButton = null;
private LocationClient locationClient = null;
private static final int UPDATE_TIME = 5000;
private static int LOCATION_COUTNS = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_location);
    locationInfoTextView = (TextView) this.findViewById(R.id.tv_loc_info);
    startButton = (Button) this.findViewById(R.id.btn_start);
    locationClient = new LocationClient(this);
    //设置定位条件
    LocationClientOption mOption = new LocationClientOption();
    mOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
    mOption.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
    mOption.setScanSpan(0);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
    mOption.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
    mOption.setIsNeedLocationDescribe(true);//可选,设置是否需要地址描述
    mOption.setNeedDeviceDirect(false);//可选,设置是否需要设备方向结果
    mOption.setLocationNotify(false);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
    mOption.setIgnoreKillProcess(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
    mOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
    mOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
    mOption.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
    locationClient.setLocOption(mOption);

    //注册位置监听器
    locationClient.registerLocationListener(new BDLocationListener() {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // TODO Auto-generated method stub
            Log.d(TAG, "onReceiveLocation: " + location.toString());
            if (location == null) {
                return;
            }
            final StringBuffer sb = new StringBuffer(256);
            sb.append("Time : ");
            sb.append(location.getTime());
            sb.append("\nError code : ");
            sb.append(location.getLocType());
            sb.append("\n纬度 : ");
            sb.append(location.getLatitude());
            sb.append("\n经度 : ");
            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("\n地址 : ");
                sb.append(location.getAddrStr());
            }
            /*LOCATION_COUTNS++;
            sb.append("\n检查位置更新次数:");
            sb.append(String.valueOf(LOCATION_COUTNS));

*/
runOnUiThread(new Runnable() {
@Override
public void run() {
locationInfoTextView.setText(sb.toString());
}
});
Log.d(TAG, “onReceiveLocation: “+sb.toString());
}

        @Override
        public void onConnectHotSpotMessage(String s, int i) {

        }


    });

    startButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (locationClient == null) {
                return;
            }
            if (locationClient.isStarted()) {
                startButton.setText("开始定位");
                locationClient.stop();
                Log.i("111111", "onClick: ");
            } else {
                startButton.setText("停止定位");

// attemptBDLocation();
locationClient.start();
/*
*当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。
*调用requestLocation( )后,每隔设定的时间,定位SDK就会进行一次定位。
*如果定位SDK根据定位依据发现位置没有发生变化,就不会发起网络请求,
*返回上一次定位的结果;如果发现位置改变,就进行网络请求进行定位,得到新的定位结果。
*定时定位时,调用一次requestLocation,会定时监听到定位结果。
*/
// locationClient.requestLocation();
}
}
});

}


/**
 * 尝试百度定位,判断是否需要手动获取权限
 */

// private void attemptBDLocation() {
// if (PermissionManager.hasPermission(this, PermissionConstant.NET_LOCATION) ||
// PermissionManager.hasPermission(this, PermissionConstant.GPS_LOCATION)) {
// locationClient.start();
// } else {
// PermissionManager.askPermission(LocatActivity.this, new String[]{PermissionConstant.NET_LOCATION,
// PermissionConstant.GPS_LOCATION}, new PermissionCallback() {
// @Override
// public void onPermissionGranted() {
// locationClient.start();
// }
//
// @Override
// public void onPermissionRefused() {
// Log.d(TAG, “cannot start location”);
getDefaultCenter();
// }
// });
// }
// }
@Override
protected void onDestroy() {
super.onDestroy();
if (locationClient != null && locationClient.isStarted()) {
locationClient.stop();
locationClient = null;
}
}
}感谢大神的帮忙

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值