Android百度地图-获取一条公交上的所有站点 获取两站直接的线路

jopen 12年前

    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                            }                        });