学习写接口回调
在做百度地图反地理编码时(坐标转地址),
需要自己写一个结果接口回调,一般在网络请求,点击事件,以及一些异步操作时,需要用到接口回调。
位置管理者,里面有位置监听:
/** * 自己写的位置管理者 * 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));//获取反向地理编码