zoukankan      html  css  js  c++  java
  • 学习写接口回调

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

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

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

    /**
     * 自己写的位置管理者
     * 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));//获取反向地理编码
  • 相关阅读:
    使用ConcurrentHashMap需要知道的细节
    并查集(Union-Find)
    LeetCode2
    补充之前博客的几种排序--希尔排序、堆排序、归并排序
    左式二叉堆
    优先队列的一种实现--堆ADT
    开放地址法散列表ADT
    分离链表法散列ADT
    AVL树
    二叉查找树ADT--C语言描述
  • 原文地址:https://www.cnblogs.com/android-yus/p/5167072.html
Copyright © 2011-2022 走看看