RouplanDemo 1
来源:互联网 发布:淘宝店铺活动设置图 编辑:程序博客网 时间:2024/06/05 04:51
RouplanDemo中使用的机制一共有三种:1.pop机制,2.Button机制3.百度地图搜索机制
我们首先看Button机制
//声明出Butotn
Button mBtnDrive = null;// 驾车搜索
Button mBtnTransit = null;// 公交搜索
Button mBtnWalk = null;// 步行搜索
Button mBtnCusRoute = null; //自定义路线
//浏览路线节点相关
Button mBtnPre = null;//上一个节点
Button mBtnNext = null;//下一个节点
//将Layout文件中的控件和class文件中的绑定,使用的是findViewById()
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);
mBtnPre.setVisibility(View.INVISIBLE);
mBtnNext.setVisibility(View.INVISIBLE);
//声明点击事件
OnClickListener clickListener = new OnClickListener(){
public void onClick(View v) {
//发起搜索
SearchButtonProcess(v);
}
};
OnClickListener nodeClickListener = new OnClickListener(){
public void onClick(View v) {
//浏览路线节点
nodeClick(v);
}
};
OnClickListener customClickListener = new OnClickListener(){
public void onClick(View v) {
//自设路线绘制示例
intentToActivity();
}
};
mBtnDrive.setOnClickListener(clickListener);
mBtnTransit.setOnClickListener(clickListener);
mBtnWalk.setOnClickListener(clickListener);
mBtnPre.setOnClickListener(nodeClickListener);
mBtnNext.setOnClickListener(nodeClickListener);
mBtnCusRoute.setOnClickListener(customClickListener);
控件和监听器绑定。
2.map search机制
mSearch = new MKSearch();
mSearch.init(bmapmanager, new MKSearchListener(){
//MKSearch和MKSearchListener是search中最重要的,MKSearch中的许多函数的结果会在
MKSearchListener()中返回,也就是所谓的异步函数。这就是为什么init()函数的两个参数是这样的。
public void onGetDrivingRouteResult(MKDrivingRouteResult res,
int error) {
//起点或终点有歧义,需要选择具体的城市列表或地址列表
if (error == MKEvent.ERROR_ROUTE_ADDR){
//遍历所有地址
// ArrayList<MKPoiInfo> stPois = res.getAddrResult().mStartPoiList;
// ArrayList<MKPoiInfo> enPois = res.getAddrResult().mEndPoiList;
// ArrayList<MKCityListInfo> stCities = res.getAddrResult().mStartCityList;
// ArrayList<MKCityListInfo> enCities = res.getAddrResult().mEndCityList;
return;
}
// 错误号可参考MKEvent中的定义
if (error != 0 || res == null) {
Toast.makeText(RoutePlanDemo.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
return;
}
searchType = 0;
RouteOverlay routeOverlay = new RouteOverlay(RoutePlanDemo.this, mMapView);
// 此处仅展示一个方案作为示例
routeOverlay.setData(res.getPlan(0).getRoute(0));
//清除其他图层
mMapView.getOverlays().clear();
//添加路线图层
mMapView.getOverlays().add(routeOverlay);
//执行刷新使生效
mMapView.refresh();
// 使用zoomToSpan()绽放地图,使路线能完全显示在地图上
mMapView.getController().zoomToSpan(routeOverlay.getLatSpanE6(), routeOverlay.getLonSpanE6());
//移动地图到起点
mMapView.getController().animateTo(res.getStart().pt);
//将路线数据保存给全局变量
route = res.getPlan(0).getRoute(0);
//重置路线节点索引,节点浏览时使用
nodeIndex = -1;
mBtnPre.setVisibility(View.VISIBLE);
mBtnNext.setVisibility(View.VISIBLE);
}
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
//起点或终点有歧义,需要选择具体的城市列表或地址列表
if (error == MKEvent.ERROR_ROUTE_ADDR){
//遍历所有地址
// ArrayList<MKPoiInfo> stPois = res.getAddrResult().mStartPoiList;
// ArrayList<MKPoiInfo> enPois = res.getAddrResult().mEndPoiList;
// ArrayList<MKCityListInfo> stCities = res.getAddrResult().mStartCityList;
// ArrayList<MKCityListInfo> enCities = res.getAddrResult().mEndCityList;
return;
}
if (error != 0 || res == null) {
Toast.makeText(RoutePlanDemo.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
return;
}
searchType = 2;
RouteOverlay routeOverlay = new RouteOverlay(RoutePlanDemo.this, mMapView);
// 此处仅展示一个方案作为示例
routeOverlay.setData(res.getPlan(0).getRoute(0));
//清除其他图层
mMapView.getOverlays().clear();
//添加路线图层
mMapView.getOverlays().add(routeOverlay);
//执行刷新使生效
mMapView.refresh();
// 使用zoomToSpan()绽放地图,使路线能完全显示在地图上
mMapView.getController().zoomToSpan(routeOverlay.getLatSpanE6(), routeOverlay.getLonSpanE6());
//移动地图到起点
mMapView.getController().animateTo(res.getStart().pt);
//将路线数据保存给全局变量
route = res.getPlan(0).getRoute(0);
//重置路线节点索引,节点浏览时使用
nodeIndex = -1;
mBtnPre.setVisibility(View.VISIBLE);
mBtnNext.setVisibility(View.VISIBLE);
}
void SearchButtonProcess(View v) {
if ( pop != null){
pop.hidePop();
}
//重置浏览节点的路线数据
route = null;
transit = null;
mBtnPre.setVisibility(View.INVISIBLE);
mBtnNext.setVisibility(View.INVISIBLE);
// 处理搜索按钮响应
EditText editSt = (EditText)findViewById(R.id.start);
EditText editEn = (EditText)findViewById(R.id.end);
// 对起点终点的name进行赋值,也可以直接对坐标赋值,赋值坐标则将根据坐标进行搜索
MKPlanNode stNode = new MKPlanNode();
stNode.name = editSt.getText().toString();
if(editSt.getText().toString()=="point")
{stNode.pt=point;
}
MKPlanNode enNode = new MKPlanNode();
enNode.name = editEn.getText().toString();
// 实际使用中请对起点终点城市进行正确的设定
if (mBtnDrive.equals(v)) {
mSearch.drivingSearch("西安", stNode, "西安", enNode);
} else if (mBtnTransit.equals(v)) {
mSearch.transitSearch("西安", stNode, enNode);
} else if (mBtnWalk.equals(v)) {
mSearch.walkingSearch("西安", stNode, "西安", enNode);
}
}
- RouplanDemo 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1》
- 1
- 1
- 1
- 1
- (1)
- 1
- 1
- 1
- 1
- 1
- Fixed-Point Designer:Create Fixed-Point Data
- 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程
- HDU 1394 Minimum Inversion Number (线段树)
- GreenDao小结
- 矩阵 快速幂
- RouplanDemo 1
- hue博客
- Orcad错误:Conflicting values of Source Part names found...
- 关于iOS6和iOS7的frame适配问题
- linux串口设置详解(转)
- c语言 __align(); #pragma pack(8) 数据对齐
- Android build system & Android.mk 规范
- android-sqlite
- 【FIX协议】金融信息交换协议 - 3 - 通信模型