zoukankan      html  css  js  c++  java
  • 百度地图API使用之实现定位

    1、初始化LocationClient类

        /*
         * 此处需要注意:LocationClient类必须在主线程中声明。需要Context类型的参数。
         * Context需要时全进程有效的context,推荐用getApplicationConext获取全进程有效的context
         */
        public  LocationClient mLocationClient = null;
        // BDLocationListener处理定位结果
        // MyLocationListener实现两个方法:定位请求回调函数+poi请求回调函数
        public  BDLocationListener myListener = new MyLocationListener();
    
    public void onCreate() {
        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
        mLocationClient.registerLocationListener( myListener );    //注册监听函数
    }

    2、实现BDLocationListener接口

    /**
         * @author JL BDLocationListener接口有2个方法需要实现:
         *         1.接收异步返回的定位结果,参数是BDLocation类型参数。
         *         2.接收异步返回的POI查询结果,参数是BDLocation类型参数。
         */
        public class MyLocationListener implements BDLocationListener {
    
            /*
             * 接收异步返回的定位结果 BDLocation包含详细的定位信息
             */
            @Override
            public void onReceiveLocation(BDLocation location) {
                // TODO Auto-generated method stub
                if (location == null)
                    return;
                StringBuffer sb = new StringBuffer(256);
                sb.append("当前定位时间 : ");
                sb.append(location.getTime());
                sb.append("
    获取定位类型 : ");
                sb.append(location.getLocType());
                sb.append("
    纬度坐标 : ");
                sb.append(location.getLatitude());
                sb.append("
    经度坐标 : ");
                sb.append(location.getLongitude());
                sb.append("
    定位精度 : ");
                sb.append(location.getRadius());
    
                          if (location.getLocType() == BDLocation.TypeGpsLocation) {
                    // 如果是GPS定位结果
                    sb.append("
    获取速度(仅gps定位) : ");
                    sb.append(location.getSpeed());
                    sb.append("
    获取gps锁定用的卫星数 : ");
                    sb.append(location.getSatelliteNumber());
                    sb.append("
     获取手机当前的方向 : ");
                    sb.append(location.getDirection());
                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
                    // 如果是网络定位结果
                    sb.append("
    获取详细地址信息: ");
                    sb.append(location.getAddrStr());
                    sb.append("
    获取运营商信息 : ");
                    sb.append(location.getOperators());
                }
                GeoPoint geoPoint = new GeoPoint(
                        (int) (location.getLatitude() * 1E6),
                        (int) (location.getLongitude() * 1E6));
                // 将给定的位置点以动画形式移动至地图中心
                mMapView.getController().animateTo(geoPoint);
    
                logMsg(sb.toString());
            }
    
            // 接收异步返回的POI查询结果
            @Override
            public void onReceivePoi(BDLocation arg0) {
                // TODO Auto-generated method stub
    
            }
    
            private void logMsg(String string) {
                // TODO Auto-generated method stub
                Log.i("MyLocationListener", string);
            }
        }

    3、设置定位参数

    LocationClientOption option = new LocationClientOption();
            option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式
            option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
            option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms
            option.setIsNeedAddress(true);//返回的定位结果包含地址信息
            option.setNeedDeviceDirect(true);//返回的定位结果包含手机机头的方向
            mLocationClient.setLocOption(option);
            // 装在定位的属性
            mLocationClient.setLocOption(option);

    4、开始定位

            // 启动定位sdk
            mLocationClient.start();
    
            // 设置定位数据
            if (mLocationClient != null && mLocationClient.isStarted())
                // 请求定位,异步返回,结果在locationListener中获取.
                mLocationClient.requestLocation();
            else
                Log.d(tag, "locClient is null or not started");
        }

    Done

  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3538312.html
Copyright © 2011-2022 走看看