美文网首页
高德地图获取位置封装

高德地图获取位置封装

作者: 我爱吃青苹果 | 来源:发表于2017-05-19 21:15 被阅读0次

public class LocationUtils {
    static LocationUtils mLocationUtils = null;
    AMapLocationClientOption mLocationOption

    private LocationUtils() {
        initOption();
    }

    public static LocationUtils getInstance() {
        if (mLocationUtils == null) {
            synchronized (LocationUtils.class) {
                if (mLocationUtils == null) {
                    mLocationUtils = new LocationUtils();
                }
            }
        }
        return mLocationUtils;
    }

    public void getLoacattion(OnLocationChangedListener listener) {
        mListener = listener;
        init();
    }
    private void initOption(){
         //初始化定位参数
          AMapLocationClientOption mLocationOption = new AMapLocationClientOption()
                .setNeedAddress(true)//设置是否返回地址信息(默认返回地址信息)
                .setLocationMode(AMapLocationClientOption.
                        AMapLocationMode.Hight_Accuracy)//设置定位模式为高精度模式
             //   .setInterval(Constants.upload_position_time)//设置定位间隔,单位毫秒,默认为2000ms
                .setOnceLocation(true);//获取一次定位结果
        mLocationOption.setOnceLocationLatest(true);//获取最近3s内精度最高的一次定位结果
    }
    private void init() {
        AMapLocationClient mlocationClient = new AMapLocationClient(ContextApplication.mContext);
        mlocationClient.setLocationListener(new AMapLocationListener() {
            @Override
            public void onLocationChanged(AMapLocation amapLocation) {
                if (amapLocation != null) {
                    if (amapLocation.getErrorCode() == 0) {
                        //定位成功回调信息,设置相关消息
                        amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
                        if (mListener != null) {
                            mListener.onSuccess(amapLocation.getLatitude(), amapLocation.getLongitude(), amapLocation.getAddress());
                        }

                    } else {
                        if (mListener != null) {
                            mListener.onFail(amapLocation.getErrorCode(), amapLocation.getErrorInfo());
                        }
                    }
                }
            }
        });

        //设置定位参数
        mlocationClient.setLocationOption(mLocationOption);
        mlocationClient.startLocation();
    }

    OnLocationChangedListener mListener;

    interface OnLocationChangedListener {
        /**
         * 成功
         *
         * @param latitude   纬度
         * @param longitude  精度
         * @param addressstr 地址
         */
        void onSuccess(double latitude, double longitude, String addressstr);

        /**
         * 失败
         *
         * @param errCode 错误码
         * @param errInfo 错误信息
         */
        void onFail(int errCode, String errInfo);
    }

}

相关文章

网友评论

      本文标题:高德地图获取位置封装

      本文链接:https://www.haomeiwen.com/subject/ypcuxxtx.html