学习写接口回调

在做百度地图反地理编码时(坐标转地址),

需要自己写一个结果接口回调,一般在网络请求,点击事件,以及一些异步操作时,需要用到接口回调。

位置管理者,里面有位置监听:

/**
 * 自己写的位置管理者
 * Created by xhj on 16-1-27.
 */
public class TrackerLocationManager {
    protected TrackerLocationManager() {
    }

    /**
     * 位置管理者实例
     */
    private static TrackerLocationManager instance;

    public static TrackerLocationManager getInstance() {
        if (instance == null) {
            instance = new TrackerLocationManager();
        }

        return instance;
    }

    /**
     * 反向地理编码监听
     */
    public interface TrackerGeoCoderListener {
        /**要被复写的方法,获取到反地理编码的结果*/
        void getResult(ReverseGeoCodeResult result);
    }

    /**
     * 反向地理编码监听
     */
    TrackerGeoCoderListener trackerlistener;

    /**
     * 设置反向编码监听
     */
    public void setTrackerGeoCoderListener(TrackerGeoCoderListener listener) {
        this.trackerlistener = listener;
    }


    /**
     * 获取反了=地理编码的结果
     *
     * @param latLng 经纬度
     * @return
     */
    public void getPicAddress(LatLng latLng) {
        GeoCoder mSearch = GeoCoder.newInstance();
        /**地理编码检索监听者*/
        final OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {

            public void onGetGeoCodeResult(GeoCodeResult result) {
            }

            @Override
            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
                if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                    //没有找到检索结果
                    Log.d("alan", "没有检索到结果--反向");
                } else {
                    //获取反向地理编码结果
                    trackerlistener.getResult(result);//会执行到监听中的getResult方法,然后执行到子类的getResult方法
                }


            }
        };

        mSearch.setOnGetGeoCodeResultListener(listener);
        mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(latLng));//执行反向编码,在onGetReverseGeoCodeResult中获取结果
 } }

 

这是另一个类,在这个类中,进行获取反向地理编码的方法的调用以及接口的实现 

TrackerLocationManager trackerLocationManager = TrackerLocationManager.getInstance();
            trackerLocationManager.setTrackerGeoCoderListener(myGeoCoderListener);
            trackerLocationManager.getPicAddress(latList.get(j));//获取反向地理编码

 

posted @ 2016-01-28 17:49  四念处  阅读(684)  评论(0编辑  收藏  举报