Android学习笔记之百度地图(公交换乘路线搜索及TransitOverlay)

本文主要是介绍Android学习笔记之百度地图(公交换乘路线搜索及TransitOverlay),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


公交换乘路线搜索及TransitOverlay

       这里只提供java代码,xml代码参照: Android学习笔记之初步学百度地图

重要代码:

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));  // 设置驾车路线搜索策略,时间优先、费用最少或距离最短  /*   * EBUS_TIME_FIRST   * public static final int EBUS_TIME_FIRST   * 公交检索策略常量:时间优先   * EBUS_TRANSFER_FIRST   * public static final int EBUS_TRANSFER_FIRST   * 公交检索策略常量:最少换乘   * EBUS_WALK_FIRST   * public static final int EBUS_WALK_FIRST   * 公交检索策略常量:最少步行距离   * EBUS_NO_SUBWAY   * public static final int EBUS_NO_SUBWAY   * 公交检索策略常量:不含地铁   */  // 设置乘车路线搜索策略,时间优先、最少换乘、最少步行距离或不含地铁  mKSearch.setTransitPolicy(MKSearch.EBUS_TRANSFER_FIRST);  mKSearch.transitSearch("北京", start, end); // 必须设置城市名


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

@Overridepublic void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {    if (result == null) {        return;    }    TransitOverlay transitOverlay = new TransitOverlay(MyMapActivity.this, mMapView);    // 此处仅展示一个方案作为示例    transitOverlay.setData(result.getPlan(0));    mMapView.getOverlays().add(transitOverlay);}


API:

transitSearch

public int transitSearch(java.lang.String city, MKPlanNode start, MKPlanNode end)

公交路线搜索. 

异步函数,返回结果在MKSearchListener里的onGetTransitRouteResult方法通知
参数:
city - 城市名,用于在哪个城市内进行检索
start - 检索的起点,可通过关键字,坐标两种方式指定
end - 检索的终点,可通过关键字,坐标两种方式指定
返回:
成功返回0,否则返回-1

setTransitPolicy

public int setTransitPolicy(int policy)

设置路线规划策略. 

参数为策略常量。对下次搜索有效
参数:
policy - EBUS_TIME_FIRST:时间优先;EBUS_TRANSFER_FIRST:少换乘;EBUS_WALK_FIRST:少步行;EBUS_NO_SUBWAY: 非地铁
返回:
成功返回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;import com.baidu.mapapi.TransitOverlay;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; @Override public 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));  // 设置驾车路线搜索策略,时间优先、费用最少或距离最短  /*   * EBUS_TIME_FIRST   * public static final int EBUS_TIME_FIRST   * 公交检索策略常量:时间优先   * EBUS_TRANSFER_FIRST   * public static final int EBUS_TRANSFER_FIRST   * 公交检索策略常量:最少换乘   * EBUS_WALK_FIRST   * public static final int EBUS_WALK_FIRST   * 公交检索策略常量:最少步行距离   * EBUS_NO_SUBWAY   * public static final int EBUS_NO_SUBWAY   * 公交检索策略常量:不含地铁   */  // 设置乘车路线搜索策略,时间优先、最少换乘、最少步行距离或不含地铁  mKSearch.setTransitPolicy(MKSearch.EBUS_TRANSFER_FIRST);  mKSearch.transitSearch("北京", 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表示正确返回    */  }  public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2)  {   /*    * 返回poi搜索结果。 参数: arg0 - 搜索结果 arg1 - 返回结果类型: MKSearch.TYPE_POI_LIST MKSearch.TYPE_AREA_POI_LIST MKSearch.TYPE_CITY_LIST arg2 - 错误号,0表示正确返回    */     }  public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1)  {   /*    * 返回公交搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示正确返回, 当返回MKEvent.ERROR_ROUTE_ADDR时,表示起点或终点有歧义, 调用MKTransitRouteResult的getAddrResult方法获取推荐的起点或终点信息    */    if (arg0 == null) {           return;       }       TransitOverlay transitOverlay = new TransitOverlay(BaiduMapActivity.this, mapView);       // 此处仅展示一个方案作为示例       transitOverlay.setData(arg0.getPlan(0));       mapView.getOverlays().add(transitOverlay);  }  public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1)  {   /*    * 返回步行路线搜索结果。 参数: arg0 - 搜索结果 arg1 - 错误号,0表示正确返回    */  } } @Override protected boolean isRouteDisplayed() {  return false; } @Override protected void onDestroy() {  if (mapManager != null)  {   mapManager.destroy();   mapManager = null;  }  super.onDestroy(); } @Override protected void onPause() {  if (mapManager != null)  {   mapManager.stop();  }  super.onPause(); } @Override protected void onResume() {  if (mapManager != null)  {   mapManager.start();  }  super.onResume(); }}



           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

这篇关于Android学习笔记之百度地图(公交换乘路线搜索及TransitOverlay)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/364913

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四