`
ydbc
  • 浏览: 716009 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

百度地图SDK for Android【Demo路径规划】

 
阅读更多

今天我将给大家分享路径规划接口的使用。

首先,我们要构建一个最基本的地图应用,具体介绍请参考:百度地图SDK for Android【Demo地图展示】

自此基础之上,我们对工程做一定的修改,即可实现一个最基本的路径规划应用。

第一步,修改布局文件,添加用于输入起点、终点的输入框已经执行路径规划操作的按钮。代码如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <!-- 放入百度地图的mapview -->
    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapsView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" 
        android:layout_toLeftOf="@+id/button1">
        <!-- 起点输入框 -->
        <EditText
	        android:id="@+id/editText1"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:ems="50" 
	        android:layout_weight="1"
	        android:hint="请输入起点">
	    </EditText>
	    <!-- 终点输入框 -->
	    <EditText
	        android:id="@+id/editText2"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:ems="50" 
	        android:layout_weight="1"
	        android:hint="请输入终点">
	    </EditText>
    </LinearLayout>

    <!-- 搜索执行按钮 -->
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="《搜索》" />

</RelativeLayout>

第二步,在主程序中定义并初始化以上控件(地图控件、输入框控件和按钮控件)。代码如下:

		// 初始化mapview对象,并且设置显示缩放控件
		mapView = (MapView) findViewById(R.id.bmapsView);
		mapView.setBuiltInZoomControls(true);
		
		// 初始化起点、终点输入框及搜索按钮
		startEditText = (EditText) findViewById(R.id.editText1);
		endEditText = (EditText) findViewById(R.id.editText2);
		button = (Button) findViewById(R.id.button1);

第三步,定义检索所需的对象和用于监听检索结果的对象,并实现监听方法。代码如下:

注意:路径规划实际上也是一种特殊的空间检索,因此监听对象和Poi检索的是一样的,有兴趣的读者还可参看上一篇关于Poi检索的博客

	// 定义路径搜索对象
	MKSearch mkSearch = null;
	
	// 结果监听对象
	MKSearchListener mkSearchListener = new MKSearchListener() {
		
		@Override
		public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			if (arg1 != 0 || arg0 == null) {
				Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
				return;
			}
			
			RouteOverlay routeOverlay = new RouteOverlay(MainActivity.this, mapView);
		    // 此处仅展示一个方案作为示例
		    routeOverlay.setData(arg0.getPlan(0).getRoute(0));
		    mapView.getOverlays().clear();
		    mapView.getOverlays().add(routeOverlay);
		    mapView.refresh();
		    mapView.getController().animateTo(arg0.getStart().pt);
		    
		}
		
		@Override
		public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetPoiDetailSearchResult(int arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
	};

以上代码主要实现了对步行路径规划的事件监听,本示例也是针对步行检索所展开的,开发者可根据自身的实际需求实现各方法的具体操作。

第四步,初始化检索对象(与Poi检索的方法相同)。代码如下:

		// 初始化检索对象
		mkSearch = new MKSearch();
		mkSearch.init(bMapManager, mkSearchListener);

第五步,实现button的点击实现,即首先判断用户输入的关键字是否为空,不为空才开始执行检索。代码如下:

		// 设置button的点击事件,先判断起点终点是否为空,不为空就开始执行步行检索
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String start = startEditText.getText().toString();
				String end = endEditText.getText().toString();
				if(start.equals("") || end.equals(""))
				{
					Toast.makeText(MainActivity.this, "起点或终点不可为空!", Toast.LENGTH_SHORT).show();
				}
				else 
				{
					MKPlanNode startNode = new MKPlanNode();
					startNode.name = start;
					MKPlanNode endNode = new MKPlanNode();
					endNode.name = end;
					
					// 这里仅以步行搜索为例,开发者可根据自己的实际需求自定选择route类型
					mkSearch.walkingSearch("北京", startNode, "北京", endNode);
				}
			}
		});

第六步,完成并测试结果。效果图如下所示:

注意:以上代码只是核心代码,且只针对步行检索做了示例。百度地图SDK为开发者提供了驾车线路检索、步行线路检索和公交线路检索,开发者可根据实际问题自行选择。(点击下载本示例的原工程文件



更多详细信息请登录百度地图API官方网站:http://developer.baidu.com/map/
百度地图API论坛:http://bbs.lbsyun.baidu.com/




分享到:
评论

相关推荐

    百度地图sdk级demo

    百度地图 iOS SDK是一套基于iOS4.3及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、定位等丰富的LBS能力。

    高仿百度地图

    6、RoutePlanDemo模仿了百度地图5.3.1的路径规划。 7、OfflineDemo模仿了百度地图5.3.1的离线地图,并集成到一个界面了。 如有问题请参照百度文档,或者联系我QQ472950043。 模仿的版本是百度地图5.3.1 ,大家有...

    高德地图移除路线Demo

    高德地图添加路线,移除路线以及更改路线颜色、宽度等操作 高德地图其他操作都很简单就

    alipay_demo:支付宝支付官方demo

    支付标准sdk_demo demo现在已切换到AndroidStudio环境,第一次build如果出现 Error:A problem occurred configuring project ':app'. &gt; SDK location not found....sdk.dir={本机Android SDK所在绝对路径}

    TnboysMap:基于高德地图sdk实现的安卓地图导航app

    TnboysMap基于高德地图sdk实现的Android地图导航app,主要包括定位、POI搜索、多种交通方式路径规划以及导航等功能,其中导航功能的语音部分基于科大讯飞sdk。应用界面设计参考了现有的Android地图app,其中icon图片...

    腾讯微博SDK

    QWeibo4Android.7z:Android平台调用demo doc.7z:SDK介绍文档 2.如何使用该SDK? (1)在你的Java工程中添加release.7z目录下的jar库,并添加到你的编译路径中 (2)根据SDK介绍文档查询API接口

    Google Android sdk 开发范例大全 部分章节代码

    9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 手机手电筒——PowerManager控制WakeLock并改变手机...

    Android11 适配,拍照问题

    Android11 适配,拍照问题。兼容Android11 targetSDk 31。有拍照功能和从相册选择图片,获取图片路径,保存图片。关联文章https://blog.csdn.net/u013778491/article/details/125638960

    Android SDK 之TTS源码及流程分析

    涉及的Android SDK 核心源码路径如下: android.speech.tts.TextToSpeech android.speech.tts.TextToSpeechService android.speech.tts.SynthesisCallback //自定义引擎回到的接口类 demo如下 private TextTo...

    Android开发环境搭建实验报告之欧阳科创编.doc

    4、安装完成后配置Android SDK,将Android SDK安装目录中的tools文件夹路径添加到环境变量中,更改系统变量中的"Path"项,添 加路径: 5、安装和配置ADT,参照Android应用开发秘籍,启动Eclipse,点击"Help"菜单,按...

    OmniAccessStellarLBS_AndroidDemo

    OmniAccess Stellar LBS Android演示应用程序 OmniAccess恒星LBS演示应用程序利用Android手机上的LBS功能,例如: 用户在室内地图中的位置地理围栏警报(输入区域时显示URL) 寻路(将方向转向给定的兴趣点) 分析...

    Android开发环境搭建实验报告(4).doc

    4、安装完成后配置Android SDK,将Android SDK安装目录中的tools文件夹路径添加到环境变量中,更改系统变量中的"Path"项,添 加路径: 5、安装和配置ADT,参照Android应用开发秘籍,启动Eclipse,点击"Help"菜单,按...

    Android开发环境搭建实验报告(3).doc

    4、安装完成后配置Android SDK,将Android SDK安装目录中的tools文件夹路径添加到环境变量中,更改系统变量中的"Path"项,添 加路径: 5、安装和配置ADT,参照Android应用开发秘籍,启动Eclipse,点击"Help"菜单,按...

    (最新整理)Android开发环境搭建实验报告.doc

    4、安装完成后配置Android SDK,将Android SDK安装目录中的tools文件夹路径添加到环境变量中,更改系统变量中的"Path"项,添加 路径: 5、安装和配置ADT,参照Android应用开发秘籍,启动Eclipse,点击"Help"菜单,按...

    android串口通讯无bug,供小伙伴们研究学习 android studio2.2以下版本

    网上下载的资源大多有各种各样的bug,本人也是为了公司业务做android开发板开发,下了网络的各种各样的Demo进行改,上传这一个改好的供大家研究学习吧。这个是网络上那个精简的android-serialport-api,我改了bug。 ...

    Android代码-XRichText

    Demo中图片选择器更换为知乎开源库Matisse,适配Android 7.0系统使用FileProvider获取图片路径。 开发环境更新为 AS 3.1.2 Gradle 4.4 compileSDK 27 support library 27.1.1,导入项目报版本错误时,请手动修改为...

    Android开发人员不得不收集的代码

    getSDKVersion : 获取设备系统版本号 getAndroidID : 获取设备 AndroidID getMacAddress : 获取设备 MAC 地址 getManufacturer : 获取设备厂商 getModel : 获取设备型号 shutdown : 关机 reboot : 重启 reboot2...

    UIAutomatorDemo:使用 UIAutomator 对 4 个小部件进行自动化测试

    UIAutomatorDemo 安装 genymotion 模拟器 选择并打开 Google Nexus 10 - 4.4.4、API 19... 导出 ANDROID_HOME=.../Library/Android/sdk 的路径 导出路径=$PATH:$ANDROID_HOME/bin export PATH=$PATH:path to .../Lib

    基于Android studio3.6的JNI教程之opencv

    (2)File-&gt;Project Structure-&gt;SDK Location,设置这3个路径,NDK选择r14b。 (3)任意找一张图片,复制到res/drawable。 (4)修改布局文件res/layout/ activity_main.xml (5)修改java文件,app/src/main/java/

Global site tag (gtag.js) - Google Analytics