android studio百度地图教程,Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(4) 路线规划之起始点地址输入实现规划...
实现起始点输入的路线规划
要实现输入起始点的路线规划,需要两个输入框,可以将两个输入框设置在和地图同一个Activity中,也可以新建一个Activity,来实现地址的输入,然后通过页面之间的跳转来传值。
起始点地址输入InputSEAddressActivity
新建一个Activity,代码如下:
public class InputSEAddressActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
这个不是完整代码,只是第一步。
新建一个layout布局文件
新建布局文件activity_input_address.xml,并且对控件布局进行设计。注意整个布局文件应该设置为RelativeLayout代码如下:
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="40dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="起点:"/>
android:id="@+id/Start_Edt_Address_school"
android:layout_weight="2"
android:layout_width="0dp"
android:hint="地址"
android:layout_height="match_parent" />
android:layout_marginTop="40dp"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="40dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="终点:"/>
android:id="@+id/End_Edt_Address_school"
android:layout_weight="2"
android:layout_width="0dp"
android:hint="地址"
android:layout_height="match_parent" />
android:layout_marginTop="80dp"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="40dp">
android:id="@+id/btn_drive_school"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="骑行规划" />
android:id="@+id/btn_bus_school"
android:text="公交规划"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
上面代码直接复制粘贴,在activity_input_address.xml布局文件中添加,如下:
效果如下:
将布局文件和Activity关联。直接在onCreate中添加
setContentView(R.layout.activity_input_address);
在AndroidManifest中声明这个Activity,否则将闪退。
实现页面之间值的传递
MainActivity跳转到InputSEAddressActivity
对MainActivity中作如下修改:
找到button和onClick方法:
对onClick中的but_RoutePlan事件作如下修改:
case R.id.but_RoutrPlan:{
Intent intent = new Intent(MainActivity.this,InputSEAddressActivity.class);
startActivityForResult(intent,0x11);
break;
}
意思就是从MainActivity跳转到InputSEAddressActivity,但是InputSEAddressActivity会回传一个值。或者回传一个bundle。
break一定要添加,不然可能出大问题.
核心代码
MainActivity
对MainActivity中的StartRoute作如下修改,并且添加一个onActivityResult方法:
//开始规划,这里实现多种不同的路线规划方式。
private void StarRoute(int id,ArrayList list) {
SDKInitializer.initialize(getApplicationContext());
//经纬度规划路线和动态输入规划路线二选一
// 设置起、终点信息 动态输入规划路线
PlanNode stNode = PlanNode.withCityNameAndPlaceName(list.get(0).toString(), list.get(1).toString());
PlanNode enNode = PlanNode.withCityNameAndPlaceName(list.get(2).toString(), list.get(3).toString());
switch (id){
case 1:
mSearch.walkingSearch((new WalkingRoutePlanOption())
.from(stNode)
.to(enNode));
break;
case 2:
if(list.get(0).toString() == list.get(2).toString()){
mSearch.transitSearch((new TransitRoutePlanOption()).from(stNode).to(enNode));
}else{
mSearch.masstransitSearch((new MassTransitRoutePlanOption()).from(stNode).to(enNode));
}
break;
default:break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0x11){
ArrayList address = data.getCharSequenceArrayListExtra("address");
StarRoute(resultCode,address);
}
}
case 后面的 1 和 2 是从InputSEAddressActivity 回传的resultCode。
InputSEAddressActivity
InputSEAddressActivity中的完整代码如下:
public class InputSEAddressActivity extends AppCompatActivity implements View.OnClickListener{
private Button btnDrive, btnBus;
private EditText start_edt_city, start_edt_address, end_edt_city, end_edt_address;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_address);
button();
}
private void button() {
btnDrive = findViewById(R.id.btn_drive_school);
btnBus = findViewById(R.id.btn_bus_school);
// start_edt_city = findViewById(R.id.Start_Edt_City_school);
start_edt_address = findViewById(R.id.Start_Edt_Address_school);
// end_edt_city = findViewById(R.id.End_Edt_City_school);
end_edt_address = findViewById(R.id.End_Edt_Address_school);
//按钮事件处理
btnDrive.setOnClickListener(this);
btnBus.setOnClickListener(this);
}
@Override
public void onClick(View v) {
SDKInitializer.initialize(getApplicationContext());
Intent intentaddress=getIntent();
String startCity = "上海";
String startAddress = start_edt_address.getText().toString();
String endCity = "上海";
String endAddress = end_edt_address.getText().toString();
ArrayList addressList = new ArrayList<>();
addressList.add(startCity);
addressList.add(startAddress);
addressList.add(endCity);
addressList.add(endAddress);
//先判断起始点地址框输入是否为空
if (startCity.isEmpty() || startAddress.isEmpty() || endCity.isEmpty() || endAddress.isEmpty()) {
Toast.makeText(this, "起点和终点不能为空", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent();//新建意图
intent.putStringArrayListExtra("address", addressList);
switch (v.getId()) {
case R.id.btn_drive_school:
setResult(1, intent); //1是resultCode,相当于回传给MainActivity的暗号
break; //用来将意图区分开,以实现不同的路线规划
case R.id.btn_bus_school:
setResult(2, intent);
break;
}
finish();
}
}
}
到此就可以实现起始点地址输入的路线导航。
运行之后效果:
测试的路线从上海博物馆到上海大剧院,如图:
看似很完美,其实存在挺早的问题。仅到目前还不能实现模糊搜索,而且精度不高。就是说一些比较小的地点,或者地址输错一个字,都找不到结果。并且不能在输入时根据关键词搜索地点,然后用列表展示出来。
这些问题将在后面的POI搜索中得到初步解决。
为了不让一篇文章内容太多,所以将骑行和驾车规划放到下一篇文章。
——————————————————————————
版权所有,转载请标明出处。 觉得有用请点个赞。
android studio百度地图教程,Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(4) 路线规划之起始点地址输入实现规划...相关推荐
- Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划
2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...
- Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(6) POI检索, 根据地址输入提示检索 Sug
POI检索, 根据地址输入提示检索 Sug 参考百度地图官方文档:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/search/sug ...
- 【02】2022.11最新超详细Vuforia图片识别教程
[02]2022.11最新超详细Vuforia图片识别教程 文章目录 [02]2022.11最新超详细Vuforia图片识别教程 1.Vuforia环境搭建 2.License Key获取及注册 3. ...
- 超详细的Android百度地图开发:在APP上定位并显示出来
超详细的Android百度地图开发:在APP上定位并显示出来 一 写在前面 二 注册百度开发者账户.申请API KEY 三.代码实现 四.问题 五.总结 一 写在前面 由于项目所需,我需要在手机APP ...
- fl如何保存再次打开_fl studio 20专业教程|fl studio专业新手教程教程(详细使用保存工程)...
fl studio 20专业教程|fl studio专业新手教程教程(详细使用保存工程),也就是众所熟知的水果软件,全能音乐制作环境或数字音频工作站(DAW).FL Studio可以编曲.剪辑.录音. ...
- Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂
目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...
- Docker最新超详细教程——基本操作
Docker最新超详细教程--基本操作 一.镜像操作 镜像名称 镜像命令 案例一:拉取.查看镜像 案例二:保存.导入镜像 二.容器操作 容器相关命令 容器三个状态 暂停与停止有什么差别? 案例一:创建 ...
- Docker最新超详细教程——安装与部署
Docker最新超详细教程--安装与部署 安装Docker CentOS安装Docker 1. 卸载(可选) 2. 安装yum工具 3. 更新本地镜像源 4. 安装docker 5. 注意事项 关闭防 ...
- win7中Android开发环境搭建超详细(百度)
Android系统如火如荼,Android软件开发也相当流行,这里介绍如何一步步完成Android软件开发环境的搭建. 工具/原料 能联网的计算机 Java环境搭建 1 Android软建开发用的是J ...
最新文章
- IPv6 — 网际协议第 6 版
- 【转】解决多文件编译中连接错误 multiple definition of*****
- java中b的平方表示_第七届蓝桥杯Java B——四平方和
- 数据分析菜鸟怒怼面试官却被打脸,只会SQL也敢来面试?
- java阿里系学习经历的小小领悟
- java 接口的声明和实现 总结_java知识总结(三):函数式接口
- matplotlib text 文字处理
- iOS开发之控制器的创建
- Cmder–Windows下命令行利器
- matplotlib 28原则
- dcdc模块降额设计_人工智能产品设计—LDO使用的技术总结篇
- 快速确定dll 是x86还是x64
- gentoo mysql_Gentoo 安装 Mysql
- 项目文档的流程图,ER图,用例图
- how to define the RASIC in a team
- Convert() 转换时 报错:输入字符串的格式不正确
- MP4测试视频URL地址分享,亲测有效。可用于测试HTML5播放器效果。
- 程序员修炼之道读后感1
- 6年拉力工作经验,学了阿里P8级架构师的7+1+1落地项目,跳槽阿里年薪直接40W+
- PHP中curl使用案例(四)-- 从ftp服务器下载文件到本地
热门文章
- pandas 数据结构--DataFrame
- 服务器托管的作用,有哪些好处?
- Qt Creator 添加基于 JSON 的向导
- 使用cmake构建工程
- html 里面的 role 属性是什么意思
- React动态效果——animate.css
- C语言电话号码判断合法性
- 人工智能导论(7)——人工神经网络(Machine Learning)
- 计算机视觉sci需要什么水平论文,计算机视觉博士一般几篇论文_林达华博士_林达华视觉...
- python 多图绘制