马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 @芋头 于 2017-3-24 10:36 编辑
路线检索:驾车+步行+公交换乘 1、实现目的:广州市内,广工到广州塔的驾车路线
实现过程:
搜索:
1、初始化search:search.init(manager, listener);
2、设置驾车路线规划策略:
search.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
3、设置驾车路线搜索:
search.drivingSearch(“广州”, start, “广州”, end);
处理结果
4、设置listener进行数据的处理:
a:实例化RouteOverlay的对象,然后对该对象设置数据
overlay.setData(result.getPlan(0).getRoute(0));获得第一个方案的第一个路线。
b:将overlay添加到overlays集合,然后刷新mapView。 实现效果:
DrivingSearchDemo.Java1 - package huaxa.it.map;
- import com.baidu.mapapi.map.RouteOverlay;
- import com.baidu.mapapi.search.MKDrivingRouteResult;
- import com.baidu.mapapi.search.MKPlanNode;
- import com.baidu.mapapi.search.MKRoute;
- import com.baidu.mapapi.search.MKRoutePlan;
- import com.baidu.mapapi.search.MKSearch;
- import android.os.Bundle;
- import android.widget.Toast;
- /**
- * @项目名: BaiduMap
- * @包名: huaxa.it.map
- * @类名: DrivingSearchDemo
- * @创建者: 黄夏莲
- * @创建时间: 2016年12月3日 ,上午10:00:48
- *
- * @描述: TODO
- */
- public class DrivingSearchDemo extends BaseActivity
- {
- private MySearchListener listener;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- search();
- }
- private void search()
- {
- listener = new MySearchListener();
- search.init(manager, listener);
- // ********驾车路线规划策略************
- // setDrivingPolicy
- // public int setDrivingPolicy(int policy)
- // 设置驾车路线规划策略. 参数为策略常量。对下次搜索有效
- // 参数:
- // policy - ECAR_TIME_FIRST:时间优先;ECAR_DIS_FIRST:距离最短;ECAR_FEE_FIRST:费用最少
- // 返回:
- // 成功返回0,否则返回-1
- search.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
- // **********驾乘路线搜索***************
- // public int drivingSearch(String startCity,MKPlanNode start,String
- // endCity,MKPlanNode end)
- // 驾乘路线搜索.
- // 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
- // 参数:
- // startCity - 起点所在城市,起点为坐标时可不填
- // start - 搜索的起点,可以为坐标,名称任一种
- // endCity - 终点所在城市,终点为坐标时可不填
- // end - 搜索的终点,可以为坐标,名称任一种
- // 返回:
- // 成功返回0,否则返回-1
- // 补充:MKPlanNode的属性
- // 1、String name结点名称
- // 2、GeoPoint pt结点坐标
- MKPlanNode start = new MKPlanNode();
- start.pt = geoPoint;
- MKPlanNode end = new MKPlanNode();
- end.name = "广州塔";
- search.drivingSearch("广州", start, "广州", end);
- }
- private class MySearchListener extends BaseAdapter
- {
- @Override
- public void onGetDrivingRouteResult(MKDrivingRouteResult result,
- int iError)
- {
- // MKDrivingRouteResult() getAddrResult() 返回起点或终点的地址信息结果,
- // MKPlanNode getEnd() 获取路线终站,
- // int getNumPlan() 获取方案数目,
- // MKRoutePlan getPlan(int index) 获取第index个方案 ,
- // MKPlanNode getStart() 获取路线起点
- if (result != null && iError == 0)
- {
- // 结果处理
- RouteOverlay overlay = new RouteOverlay(DrivingSearchDemo.this,
- mapView);
- // 获得路线信息
- if (result.getNumPlan() > 0)
- {
- overlay.setData(result.getPlan(0).getRoute(0));
- mapView.getOverlays().add(overlay);
- mapView.refresh();
- }
- } else
- {
- Toast.makeText(getApplicationContext(), "没有搜索到结果",
- Toast.LENGTH_LONG).show();
- }
- super.onGetDrivingRouteResult(result, iError);
- }
- }
- }
复制代码2、实现目的:路线检索+设置途经点
修改代码:
实现效果:
途径中山大学。 - private void search()
- {
- listener = new MySearchListener();
- search.init(manager, listener);
- // ********驾车路线规划策略************
- // setDrivingPolicy
- // public int setDrivingPolicy(int policy)
- // 设置驾车路线规划策略. 参数为策略常量。对下次搜索有效
- // 参数:
- // policy - ECAR_TIME_FIRST:时间优先;ECAR_DIS_FIRST:距离最短;ECAR_FEE_FIRST:费用最少
- // 返回:
- // 成功返回0,否则返回-1
- search.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
- // **********驾乘路线搜索***************
- // public int drivingSearch(String startCity,MKPlanNode start,String
- // endCity,MKPlanNode end)
- // 驾乘路线搜索.
- // 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
- // 参数:
- // startCity - 起点所在城市,起点为坐标时可不填
- // start - 搜索的起点,可以为坐标,名称任一种
- // endCity - 终点所在城市,终点为坐标时可不填
- // end - 搜索的终点,可以为坐标,名称任一种
- // 返回:
- // 成功返回0,否则返回-1
- // 补充:MKPlanNode的属性
- // 1、String name结点名称
- // 2、GeoPoint pt结点坐标
- MKPlanNode start = new MKPlanNode();
- start.pt = geoPoint;
- MKPlanNode end = new MKPlanNode();
- end.name = "广州塔";
- // search.drivingSearch("广州", start, "广州", end);
- // public int drivingSearch(String startCity,
- // MKPlanNode start,
- // String endCity,
- // MKPlanNode end,
- // ArrayList<MKWpNode> wpNodes)
- // 驾车路线搜索,可设置途经点
- // 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
- //
- // 参数:
- // startCity - 起点所在城市,起点为坐标时可不填
- // start - 搜索的起点,可以为坐标,名称任一种
- // endCity - 终点所在城市,终点为坐标时可不填
- // end - 搜索的终点,可以为坐标,名称任一种
- // wpNodes - 途经点数据
- // 返回:
- // 成功返回0,否则返回-1
- ArrayList<MKWpNode> wpNodes = new ArrayList<MKWpNode>();
- MKWpNode node = new MKWpNode();
- node.city = "广州";
- node.name = "中山大学";
- wpNodes.add(node);
- search.drivingSearch("广州", start, "广州", end, wpNodes);
- }
复制代码
3、实现目的:广州市内,广工到广州塔的步行路线
实现过程:同上
实现效果:
WalkingSearchDemo.java - package huaxa.it.map;
- import android.os.Bundle;
- import android.widget.Toast;
- import com.baidu.mapapi.map.RouteOverlay;
- import com.baidu.mapapi.search.MKDrivingRouteResult;
- import com.baidu.mapapi.search.MKPlanNode;
- import com.baidu.mapapi.search.MKSearch;
- import com.baidu.mapapi.search.MKWalkingRouteResult;
- /**
- * @项目名: BaiduMap
- * @包名: huaxa.it.map
- * @类名: WalkingSearchDemo
- * @创建者: 黄夏莲
- * @创建时间: 2016年12月3日 ,下午2:20:29
- *
- * @描述: TODO
- */
- public class WalkingSearchDemo extends BaseActivity
- {
- private MySearchListener listener;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- search();
- }
- private void search()
- {
- listener = new MySearchListener();
- search.init(manager, listener);
- // **********驾乘路线搜索***************
- // public int walkingSearch(String startCity,
- // MKPlanNode start,
- // String endCity,
- // MKPlanNode end)
- // 步行路线搜索.
- // 异步函数,返回结果在MKSearchListener里的onGetWalkingRouteResult方法通知
- //
- // 参数:
- // startCity - 起点所在城市,起点为坐标时可不填
- // start - 搜索的起点,可以为坐标,名称任一种
- // endCity - 终点所在城市,终点为坐标时可不填
- // end - 搜索的终点,可以为坐标,名称任一种
- // 返回:
- // 成功返回0,否则返回-1
- MKPlanNode start = new MKPlanNode();
- start.pt = geoPoint;
- MKPlanNode end = new MKPlanNode();
- end.name = "广州塔";
- search.walkingSearch("广州", start, "广州", end);
- }
- private class MySearchListener extends BaseAdapter
- {
- @Override
- public void onGetWalkingRouteResult(MKWalkingRouteResult result,
- int iError)
- {
- // TODO Auto-generated method stub
- if (result != null && iError == 0)
- {
- // 结果处理
- RouteOverlay overlay = new RouteOverlay(WalkingSearchDemo.this,
- mapView);
- // 获得路线信息
- if (result.getNumPlan() > 0)
- {
- overlay.setData(result.getPlan(0).getRoute(0));
- mapView.getOverlays().add(overlay);
- mapView.refresh();
- }
- } else
- {
- Toast.makeText(getApplicationContext(), "没有搜索到结果",
- Toast.LENGTH_LONG).show();
- }
- super.onGetWalkingRouteResult(result, iError);
- }
- }
- }
复制代码
4、实现目的:广州市内,广工到广州塔的公交车路线
TransitSearchDemo.java
实现效果:
- package huaxa.it.map;
- import android.os.Bundle;
- import android.widget.Toast;
- import com.baidu.mapapi.map.RouteOverlay;
- import com.baidu.mapapi.map.TransitOverlay;
- import com.baidu.mapapi.search.MKDrivingRouteResult;
- import com.baidu.mapapi.search.MKPlanNode;
- import com.baidu.mapapi.search.MKSearch;
- import com.baidu.mapapi.search.MKTransitRouteResult;
- /**
- * @项目名: BaiduMap
- * @包名: huaxa.it.map
- * @类名: TransitSearchDemo
- * @创建者: 黄夏莲
- * @创建时间: 2016年12月3日 ,下午2:20:29
- *
- * @描述: TODO
- */
- public class TransitSearchDemo extends BaseActivity
- {
- private MySearchListener listener;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- search();
- }
- private void search()
- {
- listener = new MySearchListener();
- search.init(manager, listener);
- // ********公车路线规划策略************
- // public int setTransitPolicy(int policy)
- // 设置路线规划策略.
- // 参数为策略常量。对下次搜索有效
- //
- // 参数:
- // policy -
- // EBUS_TIME_FIRST:时间优先;EBUS_TRANSFER_FIRST:少换乘;EBUS_WALK_FIRST:少步行;EBUS_NO_SUBWAY:
- // 非地铁
- // 返回:
- // 成功返回0,否则返回-1
- search.setTransitPolicy(MKSearch.EBUS_TRANSFER_FIRST);
- // **********驾乘路线搜索***************
- // public int transitSearch(String city,
- // MKPlanNode start,
- // MKPlanNode end)
- // 公交路线搜索.
- // 异步函数,返回结果在MKSearchListener里的onGetTransitRouteResult方法通知
- //
- // 参数:
- // city - 城市名,用于在哪个城市内进行检索(必须填写)
- // start - 检索的起点,可通过关键字,坐标,两种方式指定
- // end - 检索的终点,可通过关键字,坐标,两种方式指定
- // 返回:
- // 成功返回0,否则返回-1
- MKPlanNode start = new MKPlanNode();
- start.pt = geoPoint;
- MKPlanNode end = new MKPlanNode();
- end.name = "广州塔";
- search.transitSearch("广州", start, end);
- }
- private class MySearchListener extends BaseAdapter
- {
- @Override
- public void onGetTransitRouteResult(MKTransitRouteResult result,
- int iError)
- {
- if (result != null && iError == 0)
- {
- // 结果处理
- TransitOverlay overlay = new TransitOverlay(TransitSearchDemo.this, mapView);
- if (result.getNumPlan() > 0)
- {
- overlay.setData(result.getPlan(0));
- mapView.getOverlays().add(overlay);
- mapView.refresh();
- }
- } else
- {
- Toast.makeText(getApplicationContext(), "没有搜索到结果",
- Toast.LENGTH_LONG).show();
- }
- super.onGetTransitRouteResult(result, iError);
- }
- }
- }
复制代码
|