if (poiResult。error == SearchResult。ERRORNO。NO_ERROR) {// 检索结果正常返回
bdMap。clear();
MyPoiOverlay poiOverlay = new MyPoiOverlay(bdMap);
poiOverlay。setData(poiResult);// 设置POI数据
bdMap。setOnMarkerClickListener(poiOverlay);
poiOverlay。addToMap();// 将所有的overlay添加到地图上
poiOverlay。zoomToSpan();
}
}
通过以上代码,就能实现POI检索功能了。
4。5 公交信息检索
实际上,公交信息检索与POI检索非常相似,也是把你需要检索的信息发送给百度地图服务器,然后解析得到的结果。
一般步骤:
1。 设置检索参数
2。 添加检索结果监听器
3。 发起检索
4。 解析返回结果
所以进行公交信息检索之前,需要先进行POI检索。使用searchInCity()方法在每一个城市内查询公交路线号:
city = cityEt。getText()。toString(); 文献综述
busline = buslineEt。getText()。toString();
poiSearch。searchInCity((new PoiCitySearchOption())。city(city)
。keyword(busline));
得到poi检索的结果时,在PoiResult类中有通过getAllPoi()获取poi检索结果。
@Override
public void onGetPoiResult(PoiResult poiResult) {
if (poiResult == null
|| poiResult。error == SearchResult。ERRORNO。RESULT_NOT_FOUND) {// 没有找到检索结果
Toast。makeText(BusLineSearchActivity。this, "未找到结果",
Toast。LENGTH_LONG)。show();
return;
}
if (poiResult。error == SearchResult。ERRORNO。NO_ERROR) {// 检索结果正常返回
// 得到检索结果
}
}
在PoiInfo类中有个type字段:0:普通点 1:公交站 2:公交路线 3:地铁站 4:地铁线路,
通过判断type,将正确的公交路线uid添加到一个list中。得到了uid,就可以结合城市参数,进行公交线路检索了。
if (poi。type == PoiInfo。POITYPE。BUS_LINE
|| poi。type == PoiInfo。POITYPE。SUBWAY_LINE) {
buslineIdList。add(poi。uid);
}
5 系统设计与实现
5。1 功能模块设计
系统主要功能包括定位,线路查询、路线查询和图层设置四块内容,如下图5-1所示,