mSearch = new MKSearch();// 搜索服务类
mSearch.init(mapManager, new MKSearchListener() {
public void onGetPoiResult(MKPoiResult res, int type, int error) {
// 错误号可参考MKEvent中的定义
if (error != 0 || res == null) {
Toast.makeText(BusRouteSysActivity.this, "抱歉,未找到结果",
Toast.LENGTH_LONG).show();
return;
}
String allStations = null;
MKPoiInfo curPoi = null;
int totalPoiNum = res.getNumPois();
for (int idx = 0; idx < totalPoiNum; idx++) {
Log.d("busline", "the busline is " + idx);
curPoi = res.getPoi(idx);
allStations += curPoi.name;//把所有站点放到allStation
Log.i("allStation", allStations);
if (2 == curPoi.ePoiType) {
break;
}
}
mSearch.busLineSearch(mCityName, curPoi.uid);
}
public void onGetTransitRouteResult(MKTransitRouteResult result,
int iError) {
if (result == null) {
return;
}
Log.d("liuyq", "公交换乘方案数:" + result.getNumPlan());
TransitOverlay routeOverlay = new TransitOverlay(
BusRouteSysActivity.this, mapView);
// 此处仅展示一个方案作为示例
routeOverlay.setData(result.getPlan(0));
mapView.getOverlays().clear();
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();
ResStringList = new ArrayList<String>();
for (int i = 0; i < result.getNumPlan(); i++) {
// 公交换乘方案详情类
MKTransitRoutePlan routePlan = result.getPlan(i);
// 再根据MKTransitRoutePlan类提供的方法去获取具体的换乘信息(省略)
int lineNum = routePlan.getNumLines();
Log.d("1111111", "方案" + (i + 1) + "包含的公交线路段数:" + lineNum);
StringBuffer reStringBuffer = new StringBuffer("");// 结果句子
String keyword = "";// 先 再 最后
for (int j = 0; j < lineNum; j++) {
MKLine mkLine = routePlan.getLine(j);
MKPoiInfo onstopInfo = mkLine.getGetOnStop();
MKPoiInfo offstopInfo = mkLine.getGetOffStop();
String lineName = mkLine.getTitle();// 线路名
String startPointName = onstopInfo.name;// 起点名
String endPointName = offstopInfo.name;// 终点名
String endword = "";
if (j == 0) {
keyword = "先";
} else if (j == lineNum - 1) {
keyword = ",最后";
endword = "\n\n";
} else {
keyword = ",再";
}
reStringBuffer.append(keyword + "从 " + startPointName
+ " 上车,乘坐" + lineName + "路,在 " + endPointName
+ "下车" + endword);
Log.d(TAG, "第" + (j + 1) + "段起点名称:" + startPointName);
Log.d(TAG, "第" + (j + 1) + "段终点名称:" + endPointName);
}
// 如果不重复 就加入
if (!ResStringList.contains(reStringBuffer.toString())) {
ResStringList.add(reStringBuffer.toString());
}
}
allResults = "";
for (String s : ResStringList) {
System.out.println(s);
allResults += s;
}
mapView.getController().animateTo(result.getStart().pt);
}
public void onGetDrivingRouteResult(MKDrivingRouteResult res,
int error) {
}
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
}
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
if (iError != 0 || result == null) {
Toast.makeText(BusRouteSysActivity.this, "抱歉,未找到结果",
Toast.LENGTH_LONG).show();
return;
}
allResults = "";
for (int i = 0; i < result.getBusRoute().getNumSteps(); i++) {
allResults += result.getStation(i).getContent() + "-->";
textViewTop.setText(allResults);
}
RouteOverlay routeOverlay = new RouteOverlay(
BusRouteSysActivity.this, mapView);
// 此处仅展示一个方案作为示例
routeOverlay.setData(result.getBusRoute());
mapView.getOverlays().clear();
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();
mapView.getController().animateTo(
result.getBusRoute().getStart());
}
@Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
// TODO Auto-generated method stub
}
});
百度地图-获取一条公交上的所有站点 获取两站直接的线路
最新推荐文章于 2021-04-01 09:13:55 发布