显示公交站详情与公交线路详情
1.公交站详情显示
POI搜索后PoiDetailResult的getAddress()的结果为该公交站的全部公交,如下图所示
想单独把每趟公交提取出来,可以用Java String函数中一个简单的函数string.split()
//本站公交数组
busnumStr = allbus.split(";");
由于每站公交的数量不同,而且需要点击每一栏查看详情,所以使用ListView来显示本站公交的线路名称。
POI搜索searchNearby中检索到的信息不包含每路公交的详细信息,想要在列出名称的同时显示它的首末班车时间等信息,就要用到searchBusLine了。
searchBusLine是根据uid来检索的,所以首先将保存好的公交数组通过searchInCity检索出它们的uid,并在它的监听者的onGetPoiResult接口中使用searchBusLine。
OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {
@Override
public void onGetPoiResult(PoiResult poiResult) {
if (poiResult == null || poiResult.error != SearchResult.ERRORNO.NO_ERROR) {
return;
}
//遍历所有POI,找到类型为公交线路的POI
for (PoiInfo poi : poiResult.getAllPoi()) {
if (poi.type == PoiInfo.POITYPE.BUS_LINE) {
String busLineId;
//说明该条POI为公交信息,获取该条POI的UID
busLineId = poi.uid;
System.out.println(busLineId);
mBusLineSearch.searchBusLine((new BusLineSearchOption()
.city("北京")
.uid(busLineId)));
break;
}
}
}
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
};
for (int j = 0; j < count; j++) {
mSearch.searchInCity((new PoiCitySearchOption())
.city("北京")
.keyword(busnumStr[j]));
}
在searchBusLine的监听者中使用list将搜索结果逐条保存下来。
OnGetBusLineSearchResultListener busLineListener = new OnGetBusLineSearchResultListener() {
@Override
public void onGetBusLineResult(BusLineResult busLineResult) {
list.add(busLineResult);
adapter.notifyDataSetChanged();
}
};
利用适配器内部类将ListView内容显示出来,如图。
2.公交线路详情显示
点击某一栏ListView,将之前查询到的公交线路详情的结果传给一个新的activity,其中的公交的站点也是用list保存的,方法与之前类似,显示结果如图。