第 4 步,发送请求


使用类 RouteSearch 的 calculateRideRouteAsyn(RideRouteQuery query) 方法进行骑行规划路径计算。

routeSearch.calculateDriveRouteAsyn(query);

第 5 步,接收数据


在 RouteSearch.OnRouteSearchListener 接口回调方法 void onDriveRouteSearched(DriveRouteResult result, int rCode) 处理驾车规划路径结果。返回的信息中包括:路线的距离、高速费用(仅针对7座以下轿车)、路况情况等等。

说明:

1)可以在回调中解析 result,获取驾车的路径。

2)result.getPaths()可以获取到 DrivePath 列表,驾车路径的详细信息可参考 DrivePath 类。

3)返回结果成功或者失败的响应码。1000为成功,其他为失败(详细信息参见网站开发指南-实用工具-错误码对照表)

public void onDriveRouteSearched(DriveRouteResult result, int rCode) {

//解析result获取算路结果,可参考官方demo

}

范例

package com.ldw.hello;

import android.graphics.BitmapFactory;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextWatcher;

import android.util.Log;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.Button;

import android.widget.TextView;

import com.amap.api.location.AMapLocation;

import com.amap.api.location.AMapLocationClient;

import com.amap.api.location.AMapLocationClientOption;

import com.amap.api.location.AMapLocationListener;

import com.amap.api.maps.AMap;

import com.amap.api.maps.AMapOptions;

import com.amap.api.maps.CameraUpdateFactory;

import com.amap.api.maps.MapView;

import com.amap.api.maps.model.BitmapDescriptorFactory;

import com.amap.api.maps.model.LatLng;

import com.amap.api.maps.model.Marker;

import com.amap.api.maps.model.MarkerOptions;

import com.amap.api.maps.overlay.DrivingRouteOverlay;

import com.amap.api.services.core.LatLonPoint;

import com.amap.api.services.core.PoiItem;

import com.amap.api.services.help.Inputtips;

import com.amap.api.services.help.InputtipsQuery;

import com.amap.api.services.help.Tip;

import com.amap.api.services.poisearch.PoiResult;

import com.amap.api.services.poisearch.PoiSearch;

import com.amap.api.services.route.BusRouteResult;

import com.amap.api.services.route.DrivePath;

import com.amap.api.services.route.DriveRouteResult;

import com.amap.api.services.route.RideRouteResult;

import com.amap.api.services.route.RouteSearch;

import com.amap.api.services.route.WalkRouteResult;

import java.util.ArrayList;

import java.util.List;

public class PassengerActivity extends AppCompatActivity {

private MapView _mapView = null;

private AMap _amap = null;

private AMapLocationClient _amapLocationClient = null;

private AMapLocationClientOption _amapLocationOption = null;

private Button _bt_startOrder = null;

private TextView _tv_srcAddr = null;

private AutoCompleteTextView _attv_dstAddr = null;

private Marker _selfMarker = null;

private boolean isAddSelfMarker = false;

private String _city = null;//当前定位所在的城市

private LatLonPoint _startPoint = null;

private LatLonPoint _endPoint = null;

protected void initUI() {

_mapView = (MapView)findViewById(R.id.PassengerMap);

_bt_startOrder = (Button)findViewById(R.id.bt_startOrder);

_tv_srcAddr = (TextView)findViewById(R.id.tv_passenger_srcAddr);

_attv_dstAddr = (AutoCompleteTextView)findViewById(R.id.attv_passenger_dstAddr);

}

//以某个经纬度为中心来展示地图

protected void moveMap(double latitude, double longtiude)

{

LatLng lagLng = new LatLng(latitude, longtiude);

//移动amap地图 以之前的缩放比例展示

_amap.animateCamera(CameraUpdateFactory.newLatLngZoom(lagLng, _amap.getCameraPosition().zoom));

}

//向固定的经纬度添加一个标记

protected void addMarkerToMap(double latitude, double longitude)

{

_selfMarker = _amap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude))

.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.location_marker))));

}

protected void createMap(Bundle savedInstanceState) {

//展示地图容器

_mapView.onCreate(savedInstanceState);

//得到amap对象

_amap = _mapView.getMap();

//默认显示实时交通信息

_amap.setTrafficEnabled(true);

}

//启动定位服务器

protected void doLocation()

{

//1 创建一个客户端定位句柄

_amapLocationClient = new AMapLocationClient(getApplicationContext());

//1.5 给定位客户端设置一些属性

_amapLocationOption = new AMapLocationClientOption();

//每个5s定位一次

_amapLocationOption.setInterval(3000);

//_amapLocationOption.setOnceLocation(true);

//将option设置给client对象

_amapLocationClient.setLocationOption(_amapLocationOption);

//2 给客户端句柄设置一个listenner来处理服务器返回的定位数据

_amapLocationClient.setLocationListener(new AMapLocationListener() {

@Override

public void onLocationChanged(AMapLocation aMapLocation) {

//onLocationChanged 就是如果服务器给客户端返回数据,调用的回调函数

//aMapLocation 就是服务器给客户端返回的定位数据

if (aMapLocation != null) {

//服务器是有响应的

if(aMapLocation.getErrorCode() == 0) {

//定位成功,aMapLocation获取数据

Log.e(“Amap”, "location succ address = "+ aMapLocation.getAddress());

Log.e(“Amap”, "city = "+ aMapLocation.getCity());

Log.e(“Amap”, "longtitude = " + aMapLocation.getLongitude());

Log.e(“Amap”, "latitude = " + aMapLocation.getLatitude());

if (isAddSelfMarker == false) {

//在此位置添加一个标记

addMarkerToMap(aMapLocation.getLatitude(), aMapLocation.getLongitude());

isAddSelfMarker = true;

//以自我为中心展示地图

moveMap(aMapLocation.getLatitude(), aMapLocation.getLongitude());

}

if (_startPoint == null) {

//得到乘客的起始坐标点

_startPoint = new LatLonPoint(aMapLocation.getLatitude(),aMapLocation.getLongitude());

}

//设置乘客源地址信息

_tv_srcAddr.setText(aMapLocation.getAddress());

_city = aMapLocation.getCity();

}

else {

//定位失败,

Log.e(“Amap”, "location error, code = "+ aMapLocation.getErrorCode()+

", info = "+ aMapLocation.getErrorInfo());

}

}

}

});

//3 开启定位服务

_amapLocationClient.startLocation();

}

//绘制驾驶交通路径

protected void drawRouteLine()

{

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

总结

最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-FVeqc1jR-1710492257350)]

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

技术进阶之路很漫长,一起共勉吧~

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐