高德地图教程_通过关键字进行导航

 

上一篇的地址

 高德地图教程_poi搜索以及显示

先看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);
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值