导航

关于这个导航也是困扰了我好长的一段时间的 现在终于整理出来了,来给大家分享一下 其实简单的 ,在百度的API把他的示例dome下载下来就好了

-然后我告诉你要用哪些。

百度的申请账户,申请KEY我就不多说了,直接操作

按照官方的操作先添加权限:

以下都是清单文件的配置:

下面我们在dome中找到我们想要的:

上面的我也没深研究需要的是哪个,大家谁有时间可以研究一下告诉我哈

我们要找到程序入口

点击进去找到喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCsi7uvPU2sDvw+bV0rW9z8LD5rXEPGltZyBhbHQ9"这里写图片描述" src="/uploadfile/Collfiles/20160729/2016072909310644.png" title="" /> 进到这个类里面的都是我们要的了import java.util.List;

import android.app.Activity;

import android.app.Dialog;

import android.content.Context;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.Window;

import android.widget.AdapterView;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

import com.baidu.mapapi.map.BaiduMap;

import com.baidu.mapapi.map.BitmapDescriptor;

import com.baidu.mapapi.map.BitmapDescriptorFactory;

import com.baidu.mapapi.map.InfoWindow;

import com.baidu.mapapi.map.MapPoi;

import com.baidu.mapapi.map.MapStatusUpdateFactory;

import com.baidu.mapapi.map.MapView;

import com.baidu.mapapi.model.LatLng;

import com.baidu.mapapi.search.core.RouteLine;

import com.baidu.mapapi.search.core.SearchResult;

import com.baidu.mapapi.search.route.BikingRouteLine;

import com.baidu.mapapi.search.route.BikingRoutePlanOption;

import com.baidu.mapapi.search.route.BikingRouteResult;

import com.baidu.mapapi.search.route.DrivingRouteLine;

import com.baidu.mapapi.search.route.DrivingRoutePlanOption;

import com.baidu.mapapi.search.route.DrivingRouteResult;

import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;

import com.baidu.mapapi.search.route.PlanNode;

import com.baidu.mapapi.search.route.RoutePlanSearch;

import com.baidu.mapapi.search.route.TransitRouteLine;

import com.baidu.mapapi.search.route.TransitRoutePlanOption;

import com.baidu.mapapi.search.route.TransitRouteResult;

import com.baidu.mapapi.search.route.WalkingRouteLine;

import com.baidu.mapapi.search.route.WalkingRoutePlanOption;

import com.baidu.mapapi.search.route.WalkingRouteResult;

/**

* 此demo用来展示如何进行驾车、步行??公交路线搜索并在地图使用RouteOverlay、TransitOverlay绘制

* 同时展示如何进行节点浏览并弹出泡??

*/

public class MainActivity extends Activity implements BaiduMap.OnMapClickListener,OnGetRoutePlanResultListener{

// 浏览路线节点相关

Button mBtnPre = null; // 上一个节点

Button mBtnNext = null; // 下一个节点

int nodeIndex = -1; // 节点索引,供浏览节点时使用

RouteLine route = null;

OverlayManager routeOverlay = null;

boolean useDefaultIcon = false;

private TextView popupText = null; // 泡泡view

// 地图相关,使用继承MapView的MyRouteMapView目的是重写touch事件实现泡泡处理

// 如果不处理touch事件,则无需继承,直接使用MapView即可

MapView mMapView = null; // 地图View

BaiduMap mBaidumap = null;

// 搜索相关

RoutePlanSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用

TransitRouteResult nowResult = null;

DrivingRouteResult nowResultd = null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

CharSequence titleLable = "路线规划功能";

setTitle(titleLable);

// 初始化地图

mMapView = (MapView) findViewById(R.id.map);

mBaidumap = mMapView.getMap();

mBtnPre = (Button) findViewById(R.id.pre);

mBtnNext = (Button) findViewById(R.id.next);

mBtnPre.setVisibility(View.INVISIBLE);

mBtnNext.setVisibility(View.INVISIBLE);

// 地图点击事件处理

mBaidumap.setOnMapClickListener(this);

// 初始化搜索模块,注册事件监听

mSearch = RoutePlanSearch.newInstance();

mSearch.setOnGetRoutePlanResultListener(this);

}

/**

* 发起路线规划搜索示例

*

* @param v

*/

public void searchButtonProcess(View v) {

// 重置浏览节点的路线数据

route = null;

mBtnPre.setVisibility(View.INVISIBLE);

mBtnNext.setVisibility(View.INVISIBLE);

mBaidumap.clear();

// 处理搜索按钮响应

EditText editSt = (EditText) findViewById(R.id.start);

EditText editEn = (EditText) findViewById(R.id.end);

// 设置起终点信息,对于tranist search 来说,城市名无意义

PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", editSt.getText().toString());

PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", editEn.getText().toString());

// 实际使用中请对起点终点城市进行正确的设定

if (v.getId() == R.id.drive) {

mSearch.drivingSearch((new DrivingRoutePlanOption())

.from(stNode).to(enNode));

} else if (v.getId() == R.id.transit) {

mSearch.transitSearch((new TransitRoutePlanOption())

.from(stNode).city("北京").to(enNode));

} else if (v.getId() == R.id.walk) {

mSearch.walkingSearch((new WalkingRoutePlanOption())

.from(stNode).to(enNode));

} else if (v.getId() == R.id.bike) {

mSearch.bikingSearch((new BikingRoutePlanOption())

.from(stNode).to(enNode));

}

}

/**

* 节点浏览示例

*

* @param v

*/

public void nodeClick(View v) {

if (route == null || route.getAllStep() == null) {

return;

}

if (nodeIndex == -1 && v.getId() == R.id.pre) {

return;

}

// 设置节点索引

if (v.getId() == R.id.next) {

if (nodeIndex < route.getAllStep().size() - 1) {

nodeIndex++;

} else {

return;

}

} else if (v.getId() == R.id.pre) {

if (nodeIndex > 0) {

nodeIndex--;

} else {

return;

}

}

// 获取节结果信息

LatLng nodeLocation = null;

String nodeTitle = null;

Object step = route.getAllStep().get(nodeIndex);

if (step instanceof DrivingRouteLine.DrivingStep) {

nodeLocation = ((DrivingRouteLine.DrivingStep) step).getEntrance().getLocation();

nodeTitle = ((DrivingRouteLine.DrivingStep) step).getInstructions();

} else if (step instanceof WalkingRouteLine.WalkingStep) {

nodeLocation = ((WalkingRouteLine.WalkingStep) step).getEntrance().getLocation();

nodeTitle = ((WalkingRouteLine.WalkingStep) step).getInstructions();

} else if (step instanceof TransitRouteLine.TransitStep) {

nodeLocation = ((TransitRouteLine.TransitStep) step).getEntrance().getLocation();

nodeTitle = ((TransitRouteLine.TransitStep) step).getInstructions();

} else if (step instanceof BikingRouteLine.BikingStep) {

nodeLocation = ((BikingRouteLine.BikingStep) step).getEntrance().getLocation();

nodeTitle = ((BikingRouteLine.BikingStep) step).getInstructions();

}

if (nodeLocation == null || nodeTitle == null) {

return;

}

// 移动节点至中心

mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(nodeLocation));

// show popup

popupText = new TextView(MainActivity.this);

popupText.setBackgroundResource(R.drawable.popup);

popupText.setTextColor(0xFF000000);

popupText.setText(nodeTitle);

mBaidumap.showInfoWindow(new InfoWindow(popupText, nodeLocation, 0));

}

/**

* 切换路线图标,刷新地图使其生效

* 注意: 起终点图标使用中心对齐.

*/

public void changeRouteIcon(View v) {

if (routeOverlay == null) {

return;

}

if (useDefaultIcon) {

((Button) v).setText("自定义起终点图标");

Toast.makeText(this,

"将使用系统起终点图标",

Toast.LENGTH_SHORT).show();

} else {

((Button) v).setText("系统起终点图标");

Toast.makeText(this,

"将使用自定义起终点图标",

Toast.LENGTH_SHORT).show();

}

useDefaultIcon = !useDefaultIcon;

routeOverlay.removeFromMap();

routeOverlay.addToMap();

}

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

}

@Override

public void onGetWalkingRouteResult(WalkingRouteResult result) {

if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {

Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();

}

if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {

// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息

// result.getSuggestAddrInfo()

return;

}

if (result.error == SearchResult.ERRORNO.NO_ERROR) {

nodeIndex = -1;

mBtnPre.setVisibility(View.VISIBLE);

mBtnNext.setVisibility(View.VISIBLE);

route = result.getRouteLines().get(0);

WalkingRouteOverlay overlay = new MyWalkingRouteOverlay(mBaidumap);

mBaidumap.setOnMarkerClickListener(overlay);

routeOverlay = overlay;

overlay.setData(result.getRouteLines().get(0));

overlay.addToMap();

overlay.zoomToSpan();

}

}

@Override

public void onGetTransitRouteResult(TransitRouteResult result) {

if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {

Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();

}

if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {

// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息

// result.getSuggestAddrInfo()

return;

}

if (result.error == SearchResult.ERRORNO.NO_ERROR) {

nodeIndex = -1;

if (result.getRouteLines().size() > 1 ) {

nowResult = result;

MyTransitDlg myTransitDlg = new MyTransitDlg(MainActivity.this,

result.getRouteLines(),

RouteLineAdapter.Type.TRANSIT_ROUTE);

myTransitDlg.setOnItemInDlgClickLinster(new OnItemInDlgClickListener() {

public void onItemClick(int position) {

route = nowResult.getRouteLines().get(position);

TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaidumap);

mBaidumap.setOnMarkerClickListener(overlay);

routeOverlay = overlay;

overlay.setData(nowResult.getRouteLines().get(position));

overlay.addToMap();

overlay.zoomToSpan();

}

});

myTransitDlg.show();

} else if ( result.getRouteLines().size() == 1 ) {

// 直接显示

route = result.getRouteLines().get(0);

TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaidumap);

mBaidumap.setOnMarkerClickListener(overlay);

routeOverlay = overlay;

overlay.setData(result.getRouteLines().get(0));

overlay.addToMap();

overlay.zoomToSpan();

mBtnPre.setVisibility(View.VISIBLE);

mBtnNext.setVisibility(View.VISIBLE);

} else {

Log.d("transitresult", "结果数<0" );

return;

}

}

}

@Override

public void onGetDrivingRouteResult(DrivingRouteResult result) {

if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {

Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();

}

if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {

// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息

// result.getSuggestAddrInfo()

return;

}

if (result.error == SearchResult.ERRORNO.NO_ERROR) {

nodeIndex = -1;

mBtnPre.setVisibility(View.VISIBLE);

mBtnNext.setVisibility(View.VISIBLE);

if (result.getRouteLines().size() > 1 ) {

nowResultd = result;

MyTransitDlg myTransitDlg = new MyTransitDlg(MainActivity.this,

result.getRouteLines(),

RouteLineAdapter.Type.DRIVING_ROUTE);

myTransitDlg.setOnItemInDlgClickLinster(new OnItemInDlgClickListener() {

public void onItemClick(int position) {

route = nowResultd.getRouteLines().get(position);

DrivingRouteOverlay overlay = new MyDrivingRouteOverlay(mBaidumap);

mBaidumap.setOnMarkerClickListener(overlay);

routeOverlay = overlay;

overlay.setData(nowResultd.getRouteLines().get(position));

overlay.addToMap();

overlay.zoomToSpan();

}

});

myTransitDlg.show();

} else if ( result.getRouteLines().size() == 1 ) {

route = result.getRouteLines().get(0);

DrivingRouteOverlay overlay = new MyDrivingRouteOverlay(mBaidumap);

routeOverlay = overlay;

mBaidumap.setOnMarkerClickListener(overlay);

overlay.setData(result.getRouteLines().get(0));

overlay.addToMap();

overlay.zoomToSpan();

}

}

}

@Override

public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {

if (bikingRouteResult == null || bikingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {

Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();

}

if (bikingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {

// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息

// result.getSuggestAddrInfo()

return;

}

if (bikingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {

nodeIndex = -1;

mBtnPre.setVisibility(View.VISIBLE);

mBtnNext.setVisibility(View.VISIBLE);

route = bikingRouteResult.getRouteLines().get(0);

BikingRouteOverlay overlay = new MyBikingRouteOverlay(mBaidumap);

routeOverlay = overlay;

mBaidumap.setOnMarkerClickListener(overlay);

overlay.setData(bikingRouteResult.getRouteLines().get(0));

overlay.addToMap();

overlay.zoomToSpan();

}

}

// 定制RouteOverly

private class MyDrivingRouteOverlay extends DrivingRouteOverlay {

public MyDrivingRouteOverlay(BaiduMap baiduMap) {

super(baiduMap);

}

@Override

public BitmapDescriptor getStartMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);

}

return null;

}

@Override

public BitmapDescriptor getTerminalMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);

}

return null;

}

}

private class MyWalkingRouteOverlay extends WalkingRouteOverlay {

public MyWalkingRouteOverlay(BaiduMap baiduMap) {

super(baiduMap);

}

@Override

public BitmapDescriptor getStartMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);

}

return null;

}

@Override

public BitmapDescriptor getTerminalMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);

}

return null;

}

}

private class MyTransitRouteOverlay extends TransitRouteOverlay {

public MyTransitRouteOverlay(BaiduMap baiduMap) {

super(baiduMap);

}

@Override

public BitmapDescriptor getStartMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);

}

return null;

}

@Override

public BitmapDescriptor getTerminalMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);

}

return null;

}

}

private class MyBikingRouteOverlay extends BikingRouteOverlay {

public MyBikingRouteOverlay(BaiduMap baiduMap) {

super(baiduMap);

}

@Override

public BitmapDescriptor getStartMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);

}

return null;

}

@Override

public BitmapDescriptor getTerminalMarker() {

if (useDefaultIcon) {

return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);

}

return null;

}

}

@Override

public void onMapClick(LatLng point) {

mBaidumap.hideInfoWindow();

}

@Override

public boolean onMapPoiClick(MapPoi poi) {

return false;

}

@Override

protected void onPause() {

mMapView.onPause();

super.onPause();

}

@Override

protected void onResume() {

mMapView.onResume();

super.onResume();

}

@Override

protected void onDestroy() {

mSearch.destroy();

mMapView.onDestroy();

super.onDestroy();

}

// 响应DLg中的List item 点击

interface OnItemInDlgClickListener {

public void onItemClick( int position);

}

// 供路线选择的Dialog

class MyTransitDlg extends Dialog {

private List mtransitRouteLines;

private ListView transitRouteList;

private RouteLineAdapter mTransitAdapter;

OnItemInDlgClickListener onItemInDlgClickListener;

public MyTransitDlg(Context context, int theme) {

super(context, theme);

}

public MyTransitDlg(Context context, List< ? extends RouteLine> transitRouteLines, RouteLineAdapter.Type

type) {

this( context, 0);

mtransitRouteLines = transitRouteLines;

mTransitAdapter = new RouteLineAdapter( context, mtransitRouteLines , type);

requestWindowFeature(Window.FEATURE_NO_TITLE);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_transit_dialog);

transitRouteList = (ListView) findViewById(R.id.transitList);

transitRouteList.setAdapter(mTransitAdapter);

transitRouteList.setOnItemClickListener( new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView parent, View view, int position, long id) {

onItemInDlgClickListener.onItemClick( position);

dismiss();

}

});

}

public void setOnItemInDlgClickLinster( OnItemInDlgClickListener itemListener) {

onItemInDlgClickListener = itemListener;

}

}

}

找到上面的类我们就好办了,还有一些和他有关联的代码我就不一一写出来了 告诉你们需要哪个类吧

除了main以外其他的都是了 我也是找了好久的

记得要建Application

public class MyApplication extends Application {

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext

SDKInitializer.initialize(this);

}

}

上面的是很重要的,记得在清单文件配置

忘了xml文件了 main的xml

还有两个我把名字写出来你们自己找吧

效果图:

由于网络原因 效果图有时间在传 ,请见谅!

android百度地图集成,android 百度地图集成之 导航相关推荐

  1. Android 地图导航调用百度地图、高德地图、腾讯地图,腾讯T3团队整理

    前言 ============================================================= 为什么调用第三方呢?集成在App里面不行吗? 接入导航SDK,以百度为 ...

  2. 高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)

    Screenshot_20170509-152819.png 前言 最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sd ...

  3. Android一步一步教你集成高德地图

    转载请注明出处:http://blog.csdn.net/alpha58/article/details/56488734 前言 当项目中需要使用地图SDK的时候, 是选择高德地图还是百度地图呢?从对 ...

  4. android 高德地图移动卡顿_Bmap地图,比百度、高德更好用。简洁、无广告。圣诞快乐...

    图片来源网络 首先,首先,首先各位:圣诞节快乐!!! 地图对于现在生活的我们是一款必不可少的手机软件.电子地图简直就是路痴患者的福音. 但是每次一打开百度 地图,高德地图你是不是已经受够了,百度高德漫 ...

  5. android百度地图定位自定义图标,Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法...

    本文将带你了解Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法,希望本文对大家学Android有所帮助. 总结了一下百度地图常用的方法(前提是集成百度地图环境成功): ...

  6. android 百度开发论坛,Android 百度地图开发(一)

    现在好多手机应用开发需要使用到百度地图,在使用百度地图的过程和遇到的问题整理一下方便以后使用 申请密钥 使用白度地图首先需要申请API Key,申请百度账户才能得到API Key. 登录 http:/ ...

  7. Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航

    主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...

  8. android百度地图例子,使用百度地图API进行Android地图应用开发(Eclipse)(示例代码)...

    随着基于位置的服务的兴起,地图类App呈现爆发趋势.随着而来的是地图供应商开放大量的API.供开发人员开发基于PC或者移动端的应用程序. 如今我们研究使用百度地图SDK进行Android项目的开发. ...

  9. android百度地图单点定位_Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡...

    一.问题描述 上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展示如何使用自定义图标绘制并点击时弹出泡泡 如图所示: 二. ...

最新文章

  1. tomcat中conf/server.xml配置线程池不生效的问题注意添加线程池节点executor后要在connector中增加executor属性
  2. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
  3. linux服务器带宽设置,linux 系统查看服务器带宽使用
  4. Mac OS X下安装nvm的方法
  5. 网络编程项目(聊天室项目)
  6. 对应版本_NET Framework 和对应的 Windows 版本
  7. BicycleGAN详解与实现
  8. python将txt读入矩阵_python读入txt数据,并转成矩阵
  9. 分布式系统的数据一致性问题
  10. Windows开发——DLL 文件导出和使用
  11. python pdf转txt_Python之pdf转txt
  12. QT实现操控打印机打印图片
  13. 软件测试基础学习笔记
  14. 卸载网易邮箱大师邮件从服务器删除,如何卸载网易邮箱大师 网易邮箱大师卸载教程...
  15. Excel常见统计图表汇总
  16. Flutter Text控件在不同手机上不居中的问题
  17. InSAR数据处理软件简介
  18. JAVA版本8u171与8u172的区别
  19. 【UE4 C++】角色拾取、替换武器(下)
  20. 北鲲教程 | 基于扩展有限元的混凝土受力开裂计算分析

热门文章

  1. 1003 1、2、3、4、5...鸡兔同笼问题
  2. AI量化策略会:可以直接上实盘的策略构建方法
  3. lua_gc 源码学习五
  4. DevStore热门免费优秀资源推荐(123月合集)
  5. 福布斯上面的前50区块链
  6. 计算机网络专业的自我鉴定,计算机网络专业自我鉴定范文
  7. 车联网安全之威胁建模
  8. 蚂蚁算法matlab,蚁群算法(ACA)及其Matlab实现
  9. 使用SQL Server 获取插入记录后的自增ID(自动编号)
  10. Windows Live Essentials Wave3 QFE 官方各组件独立安装包