2022年百度map开发 .pdf

上传人:Q****o 文档编号:26171625 上传时间:2022-07-16 格式:PDF 页数:9 大小:662.36KB
返回 下载 相关 举报
2022年百度map开发 .pdf_第1页
第1页 / 共9页
2022年百度map开发 .pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《2022年百度map开发 .pdf》由会员分享,可在线阅读,更多相关《2022年百度map开发 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、本文主要讲解如何通过百度地图API 搜索得到两个地点之间的公交换乘方案信息,即从 A 点乘公交车到 B 点有哪些乘车方案可以选择。这是我写的第 3 篇介绍调用百度地图API 搜索服务的文章, 所以对搜索前要做的其它工作不再介绍,再加上代码中的注释也对相关的操作、方法做了尽可能详细的说明,所以直接看示例吧。1)布局文件 res/layout/main.xml xhtmlview plaincopy1.2.7.12.2)继承了 com.baidu.mapapi.MapActivity的 Activity类javaview plaincopy1.package com.liufeng.baiduma

2、p; 2.3.import android.os.Bundle; 4.import android.util.Log; 5.6.import com.baidu.mapapi.BMapManager; 7.import com.baidu.mapapi.GeoPoint; 8.import com.baidu.mapapi.MKAddrInfo; 9.import com.baidu.mapapi.MKDrivingRouteResult; 10.import com.baidu.mapapi.MKPlanNode; 11.import com.baidu.mapapi.MKPoiResult

3、; 12.import com.baidu.mapapi.MKSearch; 13.import com.baidu.mapapi.MKSearchListener; 14.import com.baidu.mapapi.MKTransitRoutePlan; 15.import com.baidu.mapapi.MKTransitRouteResult; 16.import com.baidu.mapapi.MKWalkingRouteResult; 17.import com.baidu.mapapi.MapActivity; 名师资料总结 - - -精品资料欢迎下载 - - - - -

4、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 18.import com.baidu.mapapi.MapController; 19.import com.baidu.mapapi.MapView; 20.import com.baidu.mapapi.TransitOverlay; 21.22.publicclass TransitPolicyActivity extends MapActivity 23./ 定义地图引擎管理类24.private BMapManager mapMa

5、nager; 25./ 定义搜索服务类26.private MKSearch mMKSearch; 27.28.private MapView mapView; 29.private MapController mapController; 30.31.Override32.publicvoid onCreate(Bundle savedInstanceState) 33.super .onCreate(savedInstanceState); 34. setContentView(R.layout.main); 35.36./ 初始化 MapActivity37. mapManager =

6、new BMapManager(getApplication(); 38./ init方法的第一个参数需填入申请的API Key39. mapManager.init(285B415EBAB2A92293E85502150ADA7F03C777C4 , null ); 40.super .initMapActivity(mapManager); 41.42. mapView = (MapView) findViewById(R.id.map_View); 43./ 设置地图模式为交通地图44. mapView.setTraffic(true ); 45./ 设置启用内置的缩放控件46. map

7、View.setBuiltInZoomControls(true ); 47.48./ 构造一个经纬度点(贵州大学)49. GeoPoint geoPoint = new GeoPoint(int ) ( 26.449446 * 1E6), (int ) (106.682949 * 1E6); 50.51./ 取得地图控制器对象,用于控制MapView52. mapController = mapView.getController(); 53./ 设置地图的中心54. mapController.setCenter(geoPoint); 55./ 设置地图默认的缩放级别56. mapCont

8、roller.setZoom(12); 57.58./ 初始化 MKSearch59. mMKSearch = new MKSearch(); 60. mMKSearch.init(mapManager, new MySearchListener(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 61.62./ 起点:贵州大学63. MKPlanNode startPlanNode = new MKPlanNode(); 6

9、4. startPlanNode.pt = new GeoPoint(int ) (26.449446 * 1E6), (int ) (106.682949 * 1E6); 65./ 终点:贵州省移动66. MKPlanNode endPlanNode = new MKPlanNode(); 67. endPlanNode.pt = new GeoPoint(int ) (26.601771 * 1E6), (int ) (106.71968 * 1E6); 68./*69. * 设置公交换乘路线搜索策略,有以下4 种策略可选择:70. * 1)不含地铁: MKSearch.EBUS_NO_S

10、UBWAY71. * 2)时间优先: MKSearch.EBUS_TIME_FIRST72. * 3)最少换乘: MKSearch.EBUS_TRANSFER_FIRST 73. * 4)最少步行距离: MKSearch.EBUS_WALK_FIRST74. * 75. * 我们这里选择的搜索策略是最少换乘,即中途转车次数最少76. */77. mMKSearch.setTransitPolicy(MKSearch.EBUS_TRANSFER_FIRST); 78./ 要设置在哪个城市搜索79. mMKSearch.transitSearch( 贵阳, startPlanNode, endPl

11、anNode); 80. 81.82.Override83.protectedboolean isRouteDisplayed() 84.returnfalse; 85. 86.87.Override88.protectedvoid onDestroy() 89.if (mapManager != null) 90./ 程序退出前需调用此方法91. mapManager.destroy(); 92. mapManager = null ; 93. 94.super .onDestroy(); 95. 96.97.Override98.protectedvoid onPause() 99.if

12、(mapManager != null) 100./ 终止百度地图 API101. mapManager.stop(); 102. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 103.super .onPause(); 104. 105.106.Override107.protectedvoid onResume() 108.if (mapManager != null) 109./ 开启百度地图 API110. mapMa

13、nager.start(); 111. 112.super .onResume(); 113. 114.115./*116. * 实现 MKSearchListener接口, 用于实现异步搜索服务117. * 118. * author liufeng119. */120.publicclass MySearchListener implements MKSearchListener 121./*122. * 根据经纬度搜索地址信息结果123. * 124. * param result 搜索结果125. * param iError 错误号( 0表示正确返回)126. */127.Overr

14、ide128.publicvoid onGetAddrResult(MKAddrInfo result, int iError) 129. 130.131./*132. * 驾车路线搜索结果133. * 134. * param result 搜索结果135. * param iError 错误号( 0表示正确返回)136. */137.Override138.publicvoid onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) 139. 140.141./*142. * POI搜索结果(范围检索、城市POI 检

15、索、周边检索)143. * 144. * param result 搜索结果145. * param type 返回结果类型( 11,12,21:poi列表 7: 城市列表)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 146. * param iError 错误号( 0表示正确返回)147. */148.Override149.publicvoid onGetPoiResult(MKPoiResult result, int

16、 type, int iError) 150. 151.152./*153. * 公交换乘路线搜索结果154. * 155. * param result 搜索结果156. * param iError 错误号( 0表示正确返回)157. */158.Override159.publicvoid onGetTransitRouteResult(MKTransitRouteResult result, int iError) 160.if (result = null) 161.return; 162. 163. Log.d(liuyq, 公交换乘方案数: + result.getNumPlan

17、(); 164.165./ TransitOverlay是 baidu map api提供的用于在地图上显示公交换乘路线的Overlay166. TransitOverlay transitOverlay = new TransitOverlay(TransitPolicyActivity.this , mapView); 167./ 展示其中一个换乘方案168. transitOverlay.setData(result.getPlan(0); 169./ 在地图上显示170. mapView.getOverlays().add(transitOverlay); 171.172./*173.

18、 * 如果需要在地图上展示所有公交换乘方案,请将 165-170 行注释,并打开注释行 176-186174. * 但由于通常返回的公交换乘方案数较多,全显示在地图上会很乱, 可能分辨不出来 , 所以只显示了其中一种方案175. */176./*177. TransitOverlay transitOverlay = null;178. / 遍历搜索结果,得到所有换乘方案179. for(int i=0; iresult.getNumPlan(); i+) 180. transitOverlay = new TransitOverlay(TransitPolicyActivity.this,

19、mapView);181. / 设置展示数据182. transitOverlay.setData(result.getPlan(i);183. / 在地图上显示184. mapView.getOverlays().add(transitOverlay);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 185. 186. */187.188./*189. * 说明:190. * 1)公交换乘路线搜索结果通常都有多种换乘方案;19

20、1. * 2)通过 result.getNumPlan()可以得到换乘方案数。192. * 除了在地图上标注其中一种公交换乘方案外,如果我们要得到所有换乘方案的信息,就需要像下面这样遍历搜索结果193. */194.195./ 遍历搜索结果,得到所有换乘方案196.for ( int i= 0; iresult.getNumPlan(); i+) 197./ 公交换乘方案详情类198. MKTransitRoutePlan routePlan = result.getPlan(i); 199./ 再根据 MKTransitRoutePlan类提供的方法去获取具体的换乘信息(省略)200. 20

21、1. 202.203./*204. * 步行路线搜索结果205. * 206. * param result 搜索结果207. * param iError 错误号( 0表示正确返回)208. */209.Override210.publicvoid onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) 211. 212. 213. 说明: 在上面代码中的 199 行,省略了根据 MKTransitRoutePlan 类提供的方法去获取具体的换乘信息。 其实根据百度官方网站上提供的API 文档,一步步去实现它应该不太难

22、。 (省略部分我也没有具体去实现它,并不是不公开)下面是 MKTransitRoutePlan 类所提示的部分方法,可以参考下。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 3)AndroidManifest.xml中的配置xhtmlview plaincopy1.2.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.名师资料总结 - - -精品资料欢迎下载 - - - - - - - -

23、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 22.23.24.25.26.27.28.29.30.4)运行结果可以看到,从 “ 贵州大学 ” 到“ 贵州省移动 ” 的其中一条公交换乘方案已经显示在地图上了,点击标注线路上的起点、换乘点、终点都会有相乘车(有些地方公交无法到达,例如校园内,会采用步行+公交的方式)信息说明。备注: 这几篇文章所讲解的百度地图API 搜索服务都有一个共同点,那就是调用所有的搜索服务都需要传入地理坐标参数(经纬度)。就拿本例来说,就必须名师资料总结 - - -精品资料欢

24、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 事先知道 “ 贵州大学 ” 和“ 贵州省移动 ” 两个地点的地理坐标(经纬度)才能进行公交线路查询。在实际应用中,肯定是提供两个输入框, 由用户来输入起点和终点,当然用户输入的肯定是中文地址信息,而不是经纬度。 所以如何根据地理位置来获取经纬度值,这将是我们后面要学习研究的内容。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁