步行路线搜索及RouteOverlay

方式与驾车路线搜索类似,只需将mMKSearch.drivingSearch(null, start, null, end)修改为mMKSearch.walkingSearch(null, start, null, end),实现的方法改为onGetWalkingRouteResult即可,不再赘述。

驾车路线搜索及RouteOverlay

重要代码:

MKPlanNode start = new MKPlanNode();// 起点:天安门start.pt = new GeoPoint((int) (40.003834809598516 * 1E6),(int) (116.3263213634491 * 1E6));// 设置地图的中心 mapController.setCenter(start.pt);MKPlanNode end = new MKPlanNode();// 终点:鸟巢end.pt = new GeoPoint((int)(39.99142 * 1E6),(int)(116.39026999999998* 1E6));// 设置驾车路线搜索策略,时间优先、费用最少或距离最短/** ECAR_DIS_FIRST* public static final int ECAR_DIS_FIRST* 驾乘检索策略常量:最短距离* ECAR_FEE_FIRST* public static final int ECAR_FEE_FIRST* 驾乘检索策略常量:较少费用*///设置驾车路线规划策略.mKSearch.setDrivingPolicy(MKSearch.ECAR_TIME_FIRST);//驾乘路线搜索.mKSearch.drivingSearch("北京", start, "北京", end);

实现MySearchListener的onGetTransitRouteResult(MKTransitRouteResult, int),并展示检索结果:

public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1){/** 返回驾乘路线搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示正确返回*/if (arg0 == null){return;}RouteOverlay routeOverlay = new RouteOverlay(BaiduMapActivity.this,mapView);// 此处仅展示一个方案作为示例routeOverlay.setData(arg0.getPlan(0).getRoute(0));mapView.getOverlays().add(routeOverlay);}

API:

drivingSearch

public int drivingSearch(java.lang.String startCity, MKPlanNode start, java.lang.String endCity, MKPlanNode end)

驾乘路线搜索.
异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
参数:

startCity - 起点所在城市,起点为坐标时可不填
start - 搜索的起点,可以为坐标,名称任一种
endCity - 终点所在城市,终点为坐标可不填
end - 搜索的终点,可以为坐标,名称任一种
返回:

成功返回0,否则返回-1

setDrivingPolicy

public int setDrivingPolicy(int policy)

设置驾车路线规划策略. 参数为策略常量。对下次搜索有效
参数:

policy - ECAR_TIME_FIRST:时间优先;ECAR_DIS_FIRST:距离最短;ECAR_FEE_FIRST:费用最少
返回:

成功返回0,否则返回-1

具体实现:

注意:在模拟器上模拟不能显示乘车线路,不知道是我的问题,还是模拟器的问题。但在真机上能体现出路线。

package xiaosi.baiduMap;import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKPlanNode;
import com.baidu.mapapi.MKPoiInfo;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.PoiOverlay;
import com.baidu.mapapi.RouteOverlay;public class BaiduMapActivity extends MapActivity
{/** Called when the activity is first created. */private BMapManager mapManager = null;private String key = "1B79478DA01F7800AEA8602517A6D89B38151105";private MapView mapView = null;private MKSearch mKSearch;private MapController mapController = null;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mapManager = new BMapManager(getApplication());mapManager.init(key, null);super.initMapActivity(mapManager);mapView = (MapView) findViewById(R.id.mapView);// 设置启用内置的缩放控件mapView.setBuiltInZoomControls(true);// 得到mMapView的控制权,可以用它控制和驱动平移和缩放mapController = mapView.getController();// 设置地图zoom级别mapController.setZoom(12);mKSearch = new MKSearch();// 注意,MKSearchListener只支持一个,以最后一次设置为准mKSearch.init(mapManager, new MySearchListener());MKPlanNode start = new MKPlanNode();// 起点:天安门start.pt = new GeoPoint((int) (40.003834809598516 * 1E6),(int) (116.3263213634491 * 1E6));// 设置地图的中心 mapController.setCenter(start.pt);MKPlanNode end = new MKPlanNode();// 终点:鸟巢end.pt = new GeoPoint((int)(39.99142 * 1E6),(int)(116.39026999999998* 1E6));// 设置驾车路线搜索策略,时间优先、费用最少或距离最短/** ECAR_DIS_FIRST* public static final int ECAR_DIS_FIRST* 驾乘检索策略常量:最短距离* ECAR_FEE_FIRST* public static final int ECAR_FEE_FIRST* 驾乘检索策略常量:较少费用*///设置驾车路线规划策略.mKSearch.setDrivingPolicy(MKSearch.ECAR_TIME_FIRST);//驾乘路线搜索.mKSearch.drivingSearch("北京", start, "北京", end);}public class MySearchListener implements MKSearchListener{public void onGetAddrResult(MKAddrInfo arg0, int arg1){/** 返回地址信息搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示结果正确,result中有相关结果信息;100表示结果正确,无相关地址信息*/}public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1){/** 返回驾乘路线搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示正确返回*/if (arg0 == null){return;}RouteOverlay routeOverlay = new RouteOverlay(BaiduMapActivity.this,mapView);// 此处仅展示一个方案作为示例routeOverlay.setData(arg0.getPlan(0).getRoute(0));mapView.getOverlays().add(routeOverlay);}public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2){String result = "";/** 返回poi搜索结果。 参数: arg0 - 搜索结果 arg1 - 返回结果类型: MKSearch.TYPE_POI_LIST MKSearch.TYPE_AREA_POI_LIST MKSearch.TYPE_CITY_LIST arg2 - 错误号,0表示正确返回*/if (arg0 == null){return;}// 清除地图上已有的所有覆盖物// mapView.getOverlays().clear();// PoiOverlay是baidu map api提供的用于显示POI的OverlayPoiOverlay poioverlay = new PoiOverlay(BaiduMapActivity.this,mapView);// 在地图上显示PoiOverlay(将搜索到的兴趣点标注在地图上)poioverlay.setData(arg0.getAllPoi());// 为地图添加覆盖物mapView.getOverlays().add(poioverlay);// 刚开始忘记加这几句代码,地图一直没改变,纠结了很长时间if (arg0.getNumPois() > 0){// 设置其中一个搜索结果所在地理坐标为地图的中心MKPoiInfo poiInfo = arg0.getPoi(0);mapController.setCenter(poiInfo.pt);}// 遍历当前页返回的搜索结果(默认只返回10个)for (MKPoiInfo poiInfo : arg0.getAllPoi()){result = result + "\n" + "名称:" + poiInfo.name + "\n" + "地址:"+ poiInfo.address + "\n" + "城市:" + poiInfo.city;}// 用AlertDialog来显示搜索到的内容AlertDialog.Builder builder = new AlertDialog.Builder(BaiduMapActivity.this);builder.setTitle("搜索结果");builder.setMessage(result);builder.setPositiveButton("关闭",new android.content.DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which){dialog.dismiss();}});builder.show();}public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1){/** 返回公交搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示正确返回, 当返回MKEvent.ERROR_ROUTE_ADDR时,表示起点或终点有歧义, 调用MKTransitRouteResult的getAddrResult方法获取推荐的起点或终点信息*/}public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1){/** 返回步行路线搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示正确返回*/}}@Overrideprotected boolean isRouteDisplayed(){return false;}@Overrideprotected void onDestroy(){if (mapManager != null){mapManager.destroy();mapManager = null;}super.onDestroy();}@Overrideprotected void onPause(){if (mapManager != null){mapManager.stop();}super.onPause();}@Overrideprotected void onResume(){if (mapManager != null){mapManager.start();}super.onResume();}
}

Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)相关推荐

  1. Android学习笔记之百度地图(根据地名查询经纬度)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 重要方法 ...

  2. 【安卓学习笔记】百度地图的使用

    目录 1.百度地图官网注册开发者账号 2.在获取SH1时我遇到了keystore文件不存在的问题 3.教程 4.注意事项 (1)SDK下载的时候选择JAR格式 (2)在demo里面需要导入baidu. ...

  3. Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏

    仅限于如下ArcGIS在线地图服务(高德提供数据): //概述:彩色中文含兴趣点版中国基础地图 //投影:WGS 1984 Web-Mercator //切片格式:MIXED90 //服务类型:基础地 ...

  4. Windows phone 8 学习笔记(8) 定位地图导航

    Windows phone 8 学习笔记(8) 定位地图导航 原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控 ...

  5. Windows phone 8 学习笔记(8) 定位地图导航(转)

    Windows phone 8 学习笔记(8) 定位地图导航(转) Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模 ...

  6. Android调用跳转百度地图、高德地图、腾讯地图进行目的地导航

    Android App跳转百度地图.高德地图.腾讯地图进行目的地导航. 先放上百度.高德.腾讯地图调起API文档地址,有些参数不懂可以参考. 百度地图:http://lbsyun.baidu.com/ ...

  7. 从Eclipse转战Android Studio坑之——百度地图

    相信大家都知道如果一个项目做到一半忽然要从Eclipse转战Android Studio那肯定不太容易 ,特别是在项目引用较多第三方平台的时候(因为很多第三方平台的SDK在两个开发工具上的导入和引用方 ...

  8. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  9. android jackson xml,[Android学习笔记]jackson库的使用

    Jackson库一般用于序列化和反序列化操作,通常会涉及到的操作是: 1. Java Object -> Json String 2. Java Object -> Xml String ...

最新文章

  1. LSTM为何如此有效?
  2. win10下mysql 8.0.18 安装配置方法图文教程
  3. 企业付款到零钱 java_微信支付商户如何开通企业付款到零钱?
  4. Qt 模型视图编程的简单实例
  5. 牛客网_PAT乙级_1018人口普查(20)
  6. python 新建文件 hdfs_python基础操作以及hdfs操作
  7. Developer 转型记:一个开发平台的“魔力”
  8. html响应式布局平移,jQuery图片内部缩放和平移插件jquery.zoom.js
  9. C语言学习IDE和基本程序结构
  10. java rgb565转rgb888_RGB565 转RGB888的循环补偿(zz)
  11. php utc gmt,时区缩写 UTC, CST, GMT, CEST 以及转换
  12. 网站seo淘宝客不能做了?我是怎么用网站做淘客月入过万的
  13. 微信开发工具button跳转页面_微信小程序按钮点击跳转页面详解
  14. 微信小游戏制作坦克大战(六)碰撞检测,主角坦克碰到敌方坦克、炮弹爆炸
  15. java安装未指定的错误_安装redistributable(x64)出现0x80240017未指定的错误
  16. SoapUI导出响应文件
  17. Python OCR 识别图片内容
  18. 三角剖分与Delaunay三角剖分及带约束的Delaunay三角剖分
  19. rx7900xt和gtx3090ti差距 rx7900xt和gtx3090ti哪个好
  20. mysql数据库fetch_mysql数据库fetch

热门文章

  1. java 数字信封_本地证书实现数字信封加解密demo-java
  2. 【隧道篇 / IPsec】(5.2) ❀ 05. IPsec - 点对多星状拓扑 ❀ FortiGate 防火墙
  3. 粒子系统之——下雪了,下雨了
  4. Raspberry Pi 树莓派的备份
  5. 【IIS服务器】 一点点对WEBRESOURCE.AXD的配置及使用
  6. HTML制作简单个人简历
  7. 驭势科技CEO吴甘沙:乘用车智能驾驶淘汰赛的七个核心观点
  8. 拓嘉辰丰:拼多多网店投产比该怎么提高?
  9. Arqui9顶级教程:PS如何合成背景图像
  10. 佩戴最舒适的耳机有哪些、运动蓝牙耳机佩戴舒适度排名清单