开发者可以通过POI检索获取公交类型(公交车,地铁)的POI信息,根据POI对应的UID请求BusLineSearch检索详细的公交路线信息(如:该线路的站点数、各站点名称、参考票价等)。
1. 发起检索
/*** 在"北京"市检索"963"POI信息*/mPoiSearch.searchInCity(new PoiCitySearchOption().city("北京") //必填字段.keyword("963")); //必填字段
2. 在POI检索结果的回调中获取公交线路的UID 在V5.1.0之前的SDK版本中,通过PoiInfo.type字段获取Poi点类型,其中 公交车路线和地铁路线对应PoiInfo.type字段分别为POITYPE.BUS_LINE(2), POITYPE.SUBWAY_LINE(4)。
@Overridepublic void onGetPoiResult(PoiResult poiResult) {if (poiResult == null || poiResult.error != SearchResult.ERRORNO.NO_ERROR) {return;}//遍历所有POI,找到类型为公交线路的POIfor (PoiInfo poi : poiResult.getAllPoi()) {if (poi.type == PoiInfo.POITYPE.BUS_LINE ||poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {//获取该条公交路线POI的UIDbusLineId = poi.uid;break;}}}
自V5.1.0起,获取Poi点类型的方式发生了变化,PoiInfo.type字段返回null,应通过PoiInfo.getPoiDetailInfo.getTag方法获取tag字段来匹配。tag字段的取值请参考POI分类。 另外,需要在构造PoiCitySearchOption对象时设置scope字段值为2。 示例如下:
mPoiSearch.searchInCity(new PoiCitySearchOption().city("北京") //必填字段.keyword("963") //必填字段.scope(2));
POI检索详细介绍请查看POI检索。
发起BusLineSearch示例如下:
mBusLineSearch.searchBusLine(new BusLineSearchOption().city("北京").uid(busLineId));
@Overridepublic void onGetBusLineResult(BusLineResult busLineResult) {if (busLineResult == null || busLineResult.error != SearchResult.ERRORNO.NO_ERROR) {return;}overlay.setData(busLineResult);overlay.addToMap();overlay.zoomToSpan();}
效果如图:
BusLineResult包含线路 ID、线路名称、线路坐标、所属公交公司、首班车时间、末班车时间、全程里程、起步价、全程票价、是否有月票、沿途站点列表、分段信息。
上一篇
下一篇
本篇文章对您是否有帮助?