上一篇的地址
先看UI吧
就是一个button 和一个mapview 点击button就进行导航 因为在上一篇说道 通过Intent 传过来了三个参数 经纬度,名称 利用经纬度就可以找到目的地了,通过我们写死的经纬度就可以导航了。
java代码:
------------------------------------------------------------------------1.先获取传来的值----------------------------------------------------------------------------------
//获取上一个页面获取的经纬度已经名称
initParams();
/**
* 初始化参数
*/
private void initParams() {
Intent intent = getIntent();
//获取经度
lng = intent.getDoubleExtra(MapShowActivity.KEY_LNG, 0);
//获取纬度
lat = intent.getDoubleExtra(MapShowActivity.KEY_LAT, 0);
//获取名称
title = intent.getStringExtra(MapShowActivity.KEY_TITLE);
}
----------------------------------------------------------------------- -2.初始化控件增加点击事件的处理------------------------------------------------------
/**
* 初始化控件
*/
private void initView() {
mBtnWalk = (Button) findViewById(R.id.btn_walk);
mBtnWalk.setOnClickListener(this);
}
根据官方文档:
步行路径规划
步行路径规划可以根据起终点和步行路线的数据,使用 WalkRouteOverlay 画出步行路线图层,包括起终点和转弯点。另外也可以自定义起终点和步行转弯点的图标。
1.设置搜索条件。
通过 WalkRouteQuery(RouteSearch.FromAndTo ft, int mode) 设置搜索条件。参数ft,路径的起终点;mode,计算路径的模式。可选,默认为最快捷。
WalkRouteQuery 需要两个参数 一个 Fromandto mode , Fromandto 需要起点和终点
/* -------------------- 点击事件 -------------------- */
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_walk:
//设置开始地点,和终点
LatLonPoint llStart = new LatLonPoint(22.534369, 113.945421);
LatLonPoint llEnd = new LatLonPoint(lat, lng);
//
FromAndTo ft = new FromAndTo(llStart, llEnd);
WalkRouteQuery query = new WalkRouteQuery(ft, 0);
//回调
search.calculateWalkRouteAsyn(query);
break;
default:
break;
}
}
/* -------------------- 点击事件 -------------------- */
发送服务器后回调回来一些数据 到一个方法里后,
/* -------------------- 导航的监听事件 -------------------- */
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int rCode) {
}
@Override
public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int rCode) {
}
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int rCode) {
if (rCode == 0) {
if (walkRouteResult != null && walkRouteResult.getPaths() != null && walkRouteResult.getPaths().size() > 0) {
WalkRouteResult result = walkRouteResult;
WalkPath path = result.getPaths().get(0);
mAMap.clear();
WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(
this, mAMap, path,walkRouteResult.getStartPos(),
walkRouteResult.getTargetPos());
walkRouteOverlay.removeFromMap();
walkRouteOverlay.addToMap();
walkRouteOverlay.zoomToSpan();
} else {
Toast.makeText(this, "没有查询到结果", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(this, "网络连接失败", Toast.LENGTH_LONG).show();
}
}
/* -------------------- 导航的监听事件 -------------------- */
在没有点击的时候,就会执行初始化地图
--------------------------------------------------------------
-3.初始化地图—————————————————————————————————
/**
* 初始化地图
*/
private void initMap(Bundle savedInstanceState) {
mGDMapView = (MapView) findViewById(R.id.gd_map_view);
mGDMapView.onCreate(savedInstanceState);// 必须要写
if (mAMap == null) {
mAMap = mGDMapView.getMap();
}
// 初始化导航类
// RouteSearch 该类定义了一条路径。
search = new RouteSearch(this);
search.setRouteSearchListener(this);
}
------------------------------------------------------------- 初始化标记--------------------------------------------------------
/**
* 初始化标记
*/
private void initMarker() {
// 设置标记
MarkerOptions options = new MarkerOptions();
LatLng latLng = new LatLng(lat, lng);
options.position(latLng);
options.title(title);
// 将标记点设置为地图中心点
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(latLng, 18);
mAMap.animateCamera(update);
// 添加标记
mAMap.addMarker(options);
}