walkDemo

来源:互联网 发布:5800简单编程教学 编辑:程序博客网 时间:2024/06/06 04:33

如何在地图上生成一个完整的行走路线规划???

其实很容易,我们只需要构造一个search()函数就够用了

private void search() {
MKSearch search=new MKSearch();
search.init(bmapmanager, new MyMKSearchListenerAdapter(){
@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult result,int iError)
{
RouteOverlay overlay=new RouteOverlay(WalkActivity.this, mapview);
setData(overlay,result);
mapview.getOverlays().add(overlay);
mapview.refresh();
super.onGetWalkingRouteResult(result, iError);


}


    这里首先需要明确的是,init函数的两个参数分别是MKSearch类型和MKSearchListener类型的实例化对象构成的

这里主要是和一种异步函数这种机制有关系。异步函数可以理解为返回值在其他类的函数(在MKSearcListener类)

然后 voidonGetAddrResult(MKAddrInfo result, int iError) 
          返回地址信息搜索结果 voidonGetBusDetailResult(MKBusLineResult result, int iError) 
          返回公交车详情信息搜索结果 voidonGetDrivingRouteResult(MKDrivingRouteResult result, int iError) 
          返回驾乘路线搜索结果 voidonGetPoiDetailSearchResult(int type, int iError) 
          返回poi相信信息搜索的结果 voidonGetPoiResult(MKPoiResult result, int type, int iError) 
          返回poi搜索结果 voidonGetSuggestionResult(MKSuggestionResult result, int iError)
          返回联想词信息搜索结果 voidonGetTransitRouteResult(MKTransitRouteResult result, int iError) 
          返回公交搜索结果 voidonGetWalkingRouteResult(MKWalkingRouteResult result, int iError) 
          返回步行路线搜索结果一目了然,因为我们是想要得到步行的搜索结果,所以需要返回onGetWalkingRouteResult()方法

onGetWalkingRouteResult

void onGetWalkingRouteResult(MKWalkingRouteResult result,                             int iError)
返回步行路线搜索结果

参数:
result - 搜索结果
iError - 错误号,0表示正确返回
在该函数中我们依然是使用到Overlay的4部曲

new 一个   setdata()放入数据  overlay getoverlay(获得集合) add(将overlay加入到该集合中)fresh(手动刷新)

onGetWalkingRouteResult(MKWalkingRouteResult result,int iError)


setData(overlay,result);//注意看setData 会使用到result

MKPlanNode start=new MKPlanNode();
start.pt=point;

MKPlanNode end=new MKPlanNode();
end.pt=pingpangpoint;

search.walkingSearch("西安", start, "西安", end);
}

search.walkingSearch("西安", start, "西安", end);//start和end就是我们所说的起点和终点,

类型是MKPlanNode,需要进行初始化,之后start.pt=point;就是付给它初始值。


protected void setData(RouteOverlay overlay, MKWalkingRouteResult result) {
if(result.getNumPlan()>0){
MKRoutePlan plan=result.getPlan(0);
MKRoute route=plan.getRoute(0) ;
overlay.setData(route);


}


这个是我们定义的setData函数plan是result和route的桥梁,plan通过getPlan得到,plan再一次getroute得到route,

route才能够作为setData的输入值。


0 0
原创粉丝点击