百度地图的定位

来源:互联网 发布:mac系统炒股软件方便吗 编辑:程序博客网 时间:2024/06/11 17:09

      写的是关于百度地图的地位:

根据百度官网给出的代码,放回具体的位置和参数:

在android studio中 使用定位需要先去百度 的api中注册key 密钥(具体参考百度)

在配置文件中配置key 并配置权限去访问网络


public class MainActivity extends Activity {    private TextView mTv = null;    private Button   btnStart;    private String mData;    public LocationClient mLocationClient = null;    public BDLocationListener myListener = new MyLocationListener();    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类        mLocationClient.registerLocationListener(myListener);    //注册监听函数        mTv = (TextView)findViewById(R.id.textView1);        btnStart = (Button)findViewById(R.id.button1);        btnStart.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mLocationClient.start();                InitLocation();            }        });}    public class MyLocationListener implements BDLocationListener {        @Override        public void onReceiveLocation(BDLocation location) {            //Receive Location            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) {// GPS定位结果                sb.append("\nspeed : ");                sb.append(location.getSpeed());// 单位:公里每小时                sb.append("\nsatellite : ");                sb.append(location.getSatelliteNumber());                sb.append("\nheight : ");                sb.append(location.getAltitude());// 单位:米                sb.append("\ndirection : ");                sb.append(location.getDirection());// 单位度                sb.append("\naddr : ");                sb.append(location.getAddrStr());                sb.append("\ndescribe : ");                sb.append("gps定位成功");                sb.append(location.getAddrStr());//获得当前地址                sb.append(location.getDirection());//获得方位            } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果                sb.append("\naddr : ");                sb.append(location.getAddrStr());//获得当前地址                //运营商信息                sb.append("\noperationers : ");                sb.append(location.getOperators());                sb.append("\ndescribe : ");                sb.append("网络定位成功");            } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果                sb.append("\ndescribe : ");                sb.append("离线定位成功,离线定位结果也是有效的");            } else if (location.getLocType() == BDLocation.TypeServerError) {                sb.append("\ndescribe : ");                sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");            } else if (location.getLocType() == BDLocation.TypeNetWorkException) {                sb.append("\ndescribe : ");                sb.append("网络不同导致定位失败,请检查网络是否通畅");            } else if (location.getLocType() == BDLocation.TypeCriteriaException) {                sb.append("\ndescribe : ");                sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");            }            sb.append("\nlocationdescribe : ");            logMsg(sb.toString());            sb.append(location.getLocationDescribe());// 位置语义化信息            List<Poi> list = location.getPoiList();// POI数据            if (list != null) {                sb.append("\npoilist size = : ");                sb.append(list.size());                for (Poi p : list) {                    sb.append("\npoi= : ");                    sb.append(p.getId() + " " + p.getName() + " " + p.getRank());                }            }    Log.i("BaiduLocationApiDem", sb.toString());}    }    public void logMsg(String str) {        try {            mData = str;            if ( mTv != null )                mTv.setText(mData);        } catch (Exception e) {            e.printStackTrace();        }    }    private void InitLocation(){        LocationClientOption option = new LocationClientOption();        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置高精度定位定位模式        option.setCoorType("bd09ll");//设置百度经纬度坐标系格式        option.setScanSpan(1000);//设置发起定位请求的间隔时间为1000ms        option.setIsNeedAddress(true);//反编译获得具体位置,只有网络定位才可以        mLocationClient.setLocOption(option);    }}

logmsg 转换成文字显示

initlocation 地址的反编译  如果不使用具体的位置放回为空!

1 0