最近开发遇见bug,在搜索框中输入相应的关键词,在搜索框下面会自动联想相应的地址,然后点击某一项进行导航。但在测试时点击相应的结果,应用崩溃,查找日志发现点击的地址经纬度为null。
一般百度地图提供地址搜索相应的api,其流程如下:
1初始化搜索
SuggestionSearchmSuggestionSearch = SuggestionSearch.newInstance();
2.注册搜索监听
mSuggestionSearch.setOnGetSuggestionResultListener(this);
@Override
public void onGetSuggestionResult(SuggestionResult res) {
if (res == null || res.getAllSuggestions() == null) {
return;
}
if(!TextUtils.isEmpty(mSearchEdit.getText().toString().trim())){
mSearchInfo = res.getAllSuggestions();
mSearchAdapter.updateSearchResults(mSearchInfo);
mSearchAdapter.notifyDataSetChanged();
}
}
3.搜索对应地址
mSuggestionSearch.requestSuggestion(newSuggestionSearchOption().keyword(newText).city(mCity));
注意:搜索过程中必须要有相应的城市
解决方法:
返回的结果中判断地址结果中是否有经纬度,没有则不添加到搜索列表中去
@Override
public void onGetSuggestionResult(SuggestionResult res) {
if (res == null || res.getAllSuggestions() == null) {
return;
}
if(!TextUtils.isEmpty(mSearchEdit.getText().toString().trim())){
for(SuggestionInfo info :res.getAllSuggestions()) {
if(info.pt!=null) {
mSearchInfo.add(info);
}
}
mSearchAdapter.updateSearchResults(mSearchInfo);
mSearchAdapter.notifyDataSetChanged();
}
}
注意:此时的mSearchInfo一定要进行初始化