手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android百度地图之公交线路详情搜索
android百度地图之公交线路详情搜索
摘要:本篇文章可以实现百度公交线路搜索,可以选择多条线路,具体实现代码如下:一、公交线路详情检索获取公交线路的详情主要分来两步,1.获取公交线路的...

本篇文章可以实现百度公交线路搜索,可以选择多条线路,具体实现代码如下:

一、公交线路详情检索

获取公交线路的详情主要分来两步,1.获取公交线路的Uid,2.通过Uid获取公交线路详情。

1.获取公交线路的Uid:

/* * 获得公交线路图的Uid,并且根据系Uid发起公交线路详情的检索 * * @see * com.baidu.mapapi.MKSearchListener#onGetPoiResult(com.baidu.mapapi * .MKPoiResult, int, int) */ @Override public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) { // TODO Auto-generated method stub if (arg0 == null || arg2 != 0) { Toast.makeText(MainActivity.this, "未找到结果", 1); return; } // 定义一个公交线路描述类 MKPoiInfo mkPoiInfo = null; // 获得本次就爱你所的公交线路的总站点 int totalPoiNum = arg0.getNumPois(); for (int i = 0; i < totalPoiNum; i++) { mkPoiInfo = arg0.getPoi(i); if (mkPoiInfo.ePoiType == 2) { break; } } mkSearch.busLineSearch("开封", mkPoiInfo.uid); }

2.获取公交线路详情:

/* * 得到公交线路图的详情 * * @see * com.baidu.mapapi.MKSearchListener#onGetBusDetailResult(com.baidu. * mapapi.MKBusLineResult, int) */ @Override public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { // TODO Auto-generated method stub if (arg0 == null || arg1 != 0) { Toast.makeText(MainActivity.this, "未找到结果", 1); return; } RouteOverlay routeOverlay = new RouteOverlay(MainActivity.this, mapView); routeOverlay.setData(arg0.getBusRoute());// 获得公交线路 mapView.getOverlays().clear();// 清楚公交站点的标识 mapView.getOverlays().add(routeOverlay); mapView.invalidate(); // 采用动画形式描述公交站点 mapView.getController().animateTo(arg0.getBusRoute().getStart()); }

查询时,只需提供城市名和线路

mkSearch.poiSearchInCity("开封", "3");

完整代码:

package com.arlen.android.baidumap08; import android.os.Bundle; import android.view.Menu; import android.widget.Toast; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.MKAddrInfo; import com.baidu.mapapi.MKBusLineResult; import com.baidu.mapapi.MKDrivingRouteResult; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.MKPoiInfo; import com.baidu.mapapi.MKPoiResult; import com.baidu.mapapi.MKSearch; import com.baidu.mapapi.MKSearchListener; import com.baidu.mapapi.MKSuggestionResult; import com.baidu.mapapi.MKTransitRouteResult; import com.baidu.mapapi.MKWalkingRouteResult; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapView; import com.baidu.mapapi.RouteOverlay; public class MainActivity extends MapActivity { private BMapManager bMapManager; private MapView mapView; private String key = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A"; private MKSearch mkSearch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bMapManager = new BMapManager(MainActivity.this); bMapManager.init(key, new MKGeneralListener() { @Override public void onGetPermissionState(int arg0) { // TODO Auto-generated method stub } @Override public void onGetNetworkState(int arg0) { // TODO Auto-generated method stub } }); initMapActivity(bMapManager); mapView = (MapView) findViewById(R.id.bmapView); mkSearch = new MKSearch(); mkSearch.init(bMapManager, new MySearchListener()); mkSearch.poiSearchInCity("开封", "3"); } private class MySearchListener implements MKSearchListener { @Override public void onGetAddrResult(MKAddrInfo arg0, int arg1) { // TODO Auto-generated method stub } /* * 得到公交线路图的详情 * * @see * com.baidu.mapapi.MKSearchListener#onGetBusDetailResult(com.baidu. * mapapi.MKBusLineResult, int) */ @Override public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { // TODO Auto-generated method stub if (arg0 == null || arg1 != 0) { Toast.makeText(MainActivity.this, "未找到结果", 1); return; } RouteOverlay routeOverlay = new RouteOverlay(MainActivity.this, mapView); routeOverlay.setData(arg0.getBusRoute());// 获得公交线路 mapView.getOverlays().clear();// 清楚公交站点的标识 mapView.getOverlays().add(routeOverlay); mapView.invalidate(); // 采用动画形式描述公交站点 mapView.getController().animateTo(arg0.getBusRoute().getStart()); } @Override public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onGetPoiDetailSearchResult(int arg0, int arg1) { // TODO Auto-generated method stub } /* * 获得公交线路图的Uid,并且根据系Uid发起公交线路详情的检索 * * @see * com.baidu.mapapi.MKSearchListener#onGetPoiResult(com.baidu.mapapi * .MKPoiResult, int, int) */ @Override public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) { // TODO Auto-generated method stub if (arg0 == null || arg2 != 0) { Toast.makeText(MainActivity.this, "未找到结果", 1); return; } // 定义一个公交线路描述类 MKPoiInfo mkPoiInfo = null; // 获得本次就爱你所的公交线路的总站点 int totalPoiNum = arg0.getNumPois(); for (int i = 0; i < totalPoiNum; i++) { mkPoiInfo = arg0.getPoi(i); if (mkPoiInfo.ePoiType == 2) { break; } } mkSearch.busLineSearch("开封", mkPoiInfo.uid); } @Override public void onGetRGCShareUrlResult(String arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) { // TODO Auto-generated method stub } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (bMapManager != null) { bMapManager.destroy(); bMapManager = null; } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); if (bMapManager != null) { bMapManager.start(); } } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); if (bMapManager != null) { bMapManager.stop(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }

二、多条线路显示

在同一个地图上显示多条导航线路,也只需要分两步完成,

1.定义起始点个终点

start = new MKPlanNode(); start.pt = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)); end = new MKPlanNode(); end.pt = new GeoPoint(40057031, 116307852); mkSearch.transitSearch("北京", start, end);

2.将所有的线路详情循环显示在地图上

@Override public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { // TODO Auto-generated method stub if (arg0 == null) { return; } int planNum = arg0.getNumPlan();// 获取所有的驾车路线 for (int i = 0; i < planNum; i++) { TransitOverlay overlay = new TransitOverlay(MainActivity.this, mapView); overlay.setData(arg0.getPlan(i)); mapView.getOverlays().add(overlay); } mapView.invalidate(); mapView.getController().animateTo(arg0.getStart().pt); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持查字典教程网。

【android百度地图之公交线路详情搜索】相关文章:

Android如何防止apk程序被反编译(尊重劳动成果)

android屏幕全屏的实现代码

android程序启动画面-Splash

Android开场动画实例类Java代码

android上的一个网络接口和图片缓存框架enif简析

Android开发之线性布局

Android上网获取网络上的图片方法

Android控件系列之ImageView使用方法

Android应用程序的调试

Android控件系列之Toast使用介绍

精品推荐
分类导航