项目中开发终于开始研究到地图了,当发现项目中一个页面定位,检索,页面绘制,路径规划都用到了,看吧这个activity不用看了,密密麻麻的我是受不了了,赶紧把各个功能抽离一下。
1.根据输入进行自动poi检索 (我这也是根据项目需要加入了自己的view和适配器,各位可以根据自己的实际情况来)
/** * Created by HLD on 2016/11/23. * Contact E-mail:[email protected] ; QQ:1185291074 * 高德地图之根据输入框自动检索 */ public class InPutTipsUtil implements Inputtips.InputtipsListener { private Context mContext; private static InPutTipsUtil instance; private Inputtips mInputTips; private InputtipsQuery inputtipsQuery; private LocSearchAdapter mAdapter; private View mList; private InPutTipsUtil(Context context) { mContext = context; } public static InPutTipsUtil getInstance(Context context, LocSearchAdapter adapter) { if (instance == null) { instance = new InPutTipsUtil(context); } //单例情况,多次进入DestinationActivity传进来的RecomandAdapter对象会不是同一个 instance.setAdapter(adapter); return instance; } /** * @param key 搜索关键字 * @param city //第二个参数默认代表全国,也可以为城市区号 */ public void search(String key, String city) { inputtipsQuery = new InputtipsQuery(key, city); inputtipsQuery.setCityLimit(true); mInputTips = new Inputtips(mContext, inputtipsQuery); mInputTips.setInputtipsListener(this); mInputTips.requestInputtipsAsyn();//调用 PoiSearch 的 requestInputtipsAsyn() 方法发送请求 } /** * @param context * @param adapter * @param view 对view进行操作控制 可根据自己的情况更换view * @return */ public static InPutTipsUtil getInstance(Context context, LocSearchAdapter adapter, View view) { if (instance == null) { instance = new InPutTipsUtil(context); } //单例情况,多次进入DestinationActivity传进来的RecomandAdapter对象会不是同一个 instance.setAdapter(adapter); instance.setListView(view); return instance; } private void setListView(View listView) { mList = listView; } private void setAdapter(LocSearchAdapter adapter) { mAdapter = adapter; } /** * 通过回调接口 onGetInputtips 解析返回的结果,获取输入提示返回的信息。 * * @param tips * @param resultCode 返回结果成功或者失败的响应码。1000为成功,其他为失败 */ @Override public void onGetInputtips(List<Tip> tips, int resultCode) { if (resultCode == 1000 && tips != null) { List<SearchData> datas = new ArrayList<>(); for (Tip tip : tips) { SearchData item = new SearchData(); item.setPoint(tip.getPoint()); item.setAddress(tip.getAddress()); item.setName(tip.getName()); datas.add(item); } if (mList != null) {//对listview有操作时 if (datas.size() > 0) { mList.setVisibility(View.VISIBLE); mAdapter.setGroup(datas); } else { mList.setVisibility(View.GONE); } } else { mAdapter.setGroup(datas); } } else { //响应失败处理 if (mList != null) { mList.setVisibility(View.GONE); } } //TODO 可以根据app自身需求对查询错误情况进行相应的提示或者逻辑处理 } }