在前面的一篇文章中介绍过查询公交路线,不过那是根据公交路线的编号进行查询,而且也只是按公交搜索,在本文中,将介绍根据起终点按驾车、公交、步行三种方式进行搜索,功能更为强大,而且同样可以浏览节点,不过百度Demo提供的示例只能在北京市进行搜索,如果要在其他地方进行搜索需要更改源代码,初始化为其他城市,这里,我将起终点城市也在界面上来进行获取,使用起来就更加方便了,代码如下:
主Activity(RoutePlanActivity):
[java]
package com.home;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MKMapTouchListener;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.PopupClickListener;
import com.baidu.mapapi.map.PopupOverlay;
import com.baidu.mapapi.map.RouteOverlay;
import com.baidu.mapapi.map.TransitOverlay;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKCityListInfo;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPlanNode;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKRoute;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKShareUrlResult;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
import com.baidu.platform.comapi.basestruct.GeoPoint;
/**
* 此demo用来展示如何进行驾车、步行、公交路线搜索并在地图使用RouteOverlay、TransitOverlay绘制
* 同时展示如何进行节点浏览并弹出泡泡
*
*/
public class RoutePlanActivity extends Activity {
// UI相关
Button mBtnDrive = null; // 驾车搜索
Button mBtnTransit = null; // 公交搜索
Button mBtnWalk = null; // 步行搜索
Button mBtnCusRoute = null; // 自定义路线
Button mBtnCusIcon = null; // 自定义起终点图标
EditText startCityText;
EditText endCityText;
// 浏览路线节点相关
Button mBtnPre = null;// 上一个节点
Button mBtnNext = null;// 下一个节点
int nodeIndex = -2;// 节点索引,供浏览节点时使用
MKRoute route = null;// 保存驾车/步行路线数据的变量,供浏览节点时使用
TransitOverlay transitOverlay = null;// 保存公交路线图层数据的变量,供浏览节点时使用
RouteOverlay routeOverlay = null;
boolean useDefaultIcon = false;
int searchType = -1;// 记录搜索的类型,区分驾车/步行和公交
private PopupOverlay pop = null;// 弹出泡泡图层,浏览节点时使用
private TextView popupText = null;// 泡泡view
private View viewCache = null;
// 地图相关,使用继承MapView的MyRouteMapView目的是重写touch事件实现泡泡处理
// 如果不处理touch事件,则无需继承,直接使用MapView即可
MapView mMapView = null; // 地图View
// 搜索相关
MKSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DemoApplication app = (DemoApplication) this.getApplication();
setContentView(R.layout.activity_routeplan);
CharSequence titleLable = "路线规划功能";
setTitle(titleLable);
// 初始化地图
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.setBuiltInZoomControls(false);
mMapView.getController().setZoom(12);
mMapView.getController().enableClick(true);
// UI初始化
mBtnDrive = (Button) findViewById(R.id.drive);
mBtnTransit = (Button) findViewById(R.id.transit);
mBtnWalk = (Button) findViewById(R.id.walk);
mBtnPre = (Button) findViewById(R.id.pre);
mBtnNext = (Button) findViewById(R.id.next);
mBtnCusRoute = (Button) findViewById(R.id.custombutton);
mBtnCusIcon = (Button) findViewById(R.id.customicon);
mBtnPre.setVisibility(View.INVISIBLE);
mBtnNext.setVisibility(View.INVISIBLE);
startCityText = (EditText) findViewById(R.id.activity_editText_startcity);
endCityText = (EditText) findViewById(R.id.activity_editText_endcity);
// 按键点击事件
OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
// 发起搜索
SearchButtonProcess(v);
}
};
OnClickListener nodeClickListener = new OnClickListener() {
public void onClick(View v) {
// 浏览路线节点
nodeClick(v);
}
};