您的位置:首页 > 其它

学习写接口回调

2016-01-28 17:49 309 查看
在做百度地图反地理编码时(坐标转地址),

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

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

/**
* 自己写的位置管理者
* 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));//获取反向地理编码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: