文档章节

导航--续

 易水寒521
发布于 2015/06/11 16:25
字数 688
阅读 213
收藏 2

RouteGuideDemo

GPS导航Demo
public class RouteGuideDemo extends Activity{
    private BNaviPoint mStartPoint = new BNaviPoint(116.30142, 40.05087,
            "百度大厦", BNaviPoint.CoordinateType.GCJ02);
    private BNaviPoint mEndPoint = new BNaviPoint(116.39750, 39.90882,
            "北京天安门", BNaviPoint.CoordinateType.GCJ02);
    private List<BNaviPoint> mViaPoints = new ArrayList<BNaviPoint>();
    private Button mBtnAddViaPoint;
    
 public void onCreate(Bundle savedInstanceState){ 
  setContentView(R.layout.activity_routeguide);
  Button btnStartNavigation = (Button)findViewById(R.id.button_navigation);
  btnStartNavigation.setOnClickListener(new OnClickListener() {  
   @Override
   public void onClick(View v) {
       if (mViaPoints.size() == 0) {
           launchNavigator();
       } else {
           launchNavigatorViaPoints();       }  } }); 
  findViewById(R.id.start_nav2_btn).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (mViaPoints.size() == 0) {
                    launchNavigator2();               } else {                   launchNavigatorViaPoints();              }            } });  
  mBtnAddViaPoint = (Button) findViewById(R.id.add_via_btn); 
  mBtnAddViaPoint.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    addViaPoint();
                }
            });
 }
    private void addViaPoint() {
        EditText viaXEditText = (EditText) findViewById(R.id.et_via_x);
        EditText viaYEditText = (EditText) findViewById(R.id.et_via_y);
        double latitude = 0, longitude = 0;
        try {
            latitude = Integer.parseInt(viaXEditText.getText().toString());
            longitude = Integer.parseInt(viaYEditText.getText().toString());
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        BNaviPoint viaPoint = new BNaviPoint(longitude/1e5, latitude/1e5,
                "途经点" + (mViaPoints.size()+1));
        mViaPoints.add(viaPoint);
        Toast.makeText(this, "已添加途经点:" + viaPoint.getName(),
                Toast.LENGTH_SHORT).show();
        if (mViaPoints.size() >= 3) {
            mBtnAddViaPoint.setEnabled(false);        }   }
 
 }
    private void launchNavigator2(){
        BNaviPoint startPoint = new BNaviPoint(116.307854,40.055878,
                "百度大厦", BNaviPoint.CoordinateType.BD09_MC);
        BNaviPoint endPoint = new BNaviPoint(116.403875,39.915168,
                "北京天安门", BNaviPoint.CoordinateType.BD09_MC);
        BaiduNaviManager.getInstance().launchNavigator(this,
                startPoint,                                      //起点(可指定坐标系)
                endPoint,                                        //终点(可指定坐标系)
                NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME,       //算路方式
                true,                                            //真实导航
                BaiduNaviManager.STRATEGY_FORCE_ONLINE_PRIORITY, //在离线策略
                new OnStartNavigationListener() {                //跳转监听
                    
                    @Override
                    public void onJumpToNavigator(Bundle configParams) {
                        Intent intent = new Intent(RouteGuideDemo.this, BNavigatorActivity.class);
                        intent.putExtras(configParams);
                        startActivity(intent);                    }                    
                    @Override
                    public void onJumpToDownloader() {                    }                });    }
    private void launchNavigatorViaPoints(){
        List<BNaviPoint> points = new ArrayList<BNaviPoint>();
    
        BaiduNaviManager.getInstance().launchNavigator(this,
                points,                                          //路线点列表
                NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME,       //算路方式
                true,                                            //真实导航
                BaiduNaviManager.STRATEGY_FORCE_ONLINE_PRIORITY, //在离线策略
                new OnStartNavigationListener() {                //跳转监听

                  RoutePlanDemo
 package com.baidu.navi.sdkdemo;
public class RoutePlanDemo extends Activity {
 private RoutePlanModel mRoutePlanModel = null;
 private MapGLSurfaceView mMapView = null; 
 public void onCreate(Bundle savedInstance) {
  super.onCreate(savedInstance);
  setContentView(R.layout.activity_routeplan); 
  findViewById(R.id.online_calc_btn).setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View arg0) {
    startCalcRoute(NL_Net_Mode.NL_Net_Mode_OnLine);   }  });
  findViewById(R.id.simulate_btn).setOnClickListener(
    new OnClickListener() {
     @Override
     public void onClick(View arg0) {
      startNavi(false);     }    });
  findViewById(R.id.real_btn).setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View arg0) {
    PreferenceHelper.getInstance(getApplicationContext())
      .putBoolean(SettingParams.Key.SP_TRACK_LOCATE_GUIDE,
        false);
    startNavi(true);   }  }); }    
 @Override
 public void onDestroy() {
  super.onDestroy(); }
 @Override
 public void onPause() {
  super.onPause();
  BNRoutePlaner.getInstance().setRouteResultObserver(null);
  ((ViewGroup) (findViewById(R.id.mapview_layout))).removeAllViews();  BNMapController.getInstance().onPause(); }
 @Override
 public void onResume() {
  super.onResume();
  initMapView();
  ((ViewGroup) (findViewById(R.id.mapview_layout))).addView(mMapView);
  BNMapController.getInstance().onResume(); }
    private void initMapView() {
        if (Build.VERSION.SDK_INT < 14) {
            BaiduNaviManager.getInstance().destroyNMapView();       }        
        mMapView = BaiduNaviManager.getInstance().createNMapView(this);
        BNMapController.getInstance().setLevel(14);
        BNMapController.getInstance().setLayerMode(
                LayerMode.MAP_LAYER_MODE_BROWSE_MAP);
        updateCompassPosition();
        BNMapController.getInstance().locateWithAnimation(
                (int) (113.97348 * 1e5), (int) (22.53951 * 1e5));    }
 private void updateCompassPosition(){
  int screenW = this.getResources().getDisplayMetrics().widthPixels;
  BNMapController.getInstance().resetCompassPosition(
    screenW - ScreenUtil.dip2px(this, 30),
     ScreenUtil.dip2px(this, 126), -1); }
 private void startCalcRoute(int netmode) {
  EditText startXEditText = (EditText) findViewById(R.id.et_start_x);
  EditText startYEditText = (EditText) findViewById(R.id.et_start_y);
  EditText endXEditText = (EditText) findViewById(R.id.et_end_x);
  EditText endYEditText = (EditText) findViewById(R.id.et_end_y);
  int sX = 0, sY = 0, eX = 0, eY = 0;
  try {
   sX = Integer.parseInt(startXEditText.getText().toString());
   sY = Integer.parseInt(startYEditText.getText().toString());
   eX = Integer.parseInt(endXEditText.getText().toString());
   eY = Integer.parseInt(endYEditText.getText().toString());
  } catch (Exception e) {
   e.printStackTrace();
  }  
  RoutePlanNode startNode = new RoutePlanNode(sX, sY,
    RoutePlanNode.FROM_MAP_POINT, "华侨城", "华侨城");
  RoutePlanNode endNode = new RoutePlanNode(eX, eY,
    RoutePlanNode.FROM_MAP_POINT, "滨海苑", "滨海苑");
  ArrayList<RoutePlanNode> nodeList = new ArrayList<RoutePlanNode>(2);
  nodeList.add(startNode);
  nodeList.add(endNode);
  BNRoutePlaner.getInstance().setObserver(new RoutePlanObserver(this, null));
  BNRoutePlaner.getInstance().setCalcMode(NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME);
  BNRoutePlaner.getInstance().setRouteResultObserver(mRouteResultObserver);
  boolean ret = BNRoutePlaner.getInstance().setPointsToCalcRoute(
    nodeList,NL_Net_Mode.NL_Net_Mode_OnLine);
  if(!ret){
   Toast.makeText(this, "规划失败", Toast.LENGTH_SHORT).show();  } }
 private void startNavi(boolean isReal) {
  if (mRoutePlanModel == null) {
   Toast.makeText(this, "请先算路!", Toast.LENGTH_LONG).show();
   return;  }
  RoutePlanNode startNode = mRoutePlanModel.getStartNode();
  RoutePlanNode endNode = mRoutePlanModel.getEndNode();
  if (null == startNode || null == endNode) {
   return;
  }
  int calcMode = BNRoutePlaner.getInstance().getCalcMode();
  Bundle bundle = new Bundle();
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_VIEW_MODE,
    BNavigator.CONFIG_VIEW_MODE_INFLATE_MAP);
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_CALCROUTE_DONE,
    BNavigator.CONFIG_CLACROUTE_DONE);
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_START_X,
    startNode.getLongitudeE6());
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_START_Y,
    startNode.getLatitudeE6());
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_END_X, endNode.getLongitudeE6());
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_END_Y, endNode.getLatitudeE6());
  bundle.putString(BNavConfig.KEY_ROUTEGUIDE_START_NAME,
    mRoutePlanModel.getStartName(this, false));
  bundle.putString(BNavConfig.KEY_ROUTEGUIDE_END_NAME,
    mRoutePlanModel.getEndName(this, false));
  bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_CALCROUTE_MODE, calcMode);
  if (!isReal) {
   bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_LOCATE_MODE,
     RGLocationMode.NE_Locate_Mode_RouteDemoGPS);
  } else {
   bundle.putInt(BNavConfig.KEY_ROUTEGUIDE_LOCATE_MODE,
     RGLocationMode.NE_Locate_Mode_GPS);
  } 
  Intent intent = new Intent(RoutePlanDemo.this, BNavigatorActivity.class);
  intent.putExtras(bundle);
  startActivity(intent);
 }
 private IRouteResultObserver mRouteResultObserver = new IRouteResultObserver() {
  @Override
  public void onRoutePlanYawingSuccess() {
  }
  @Override
  public void onRoutePlanYawingFail() {
  }
  @Override
  public void onRoutePlanSuccess() {
   BNMapController.getInstance().setLayerMode(
     LayerMode.MAP_LAYER_MODE_ROUTE_DETAIL);
   mRoutePlanModel = (RoutePlanModel) NaviDataEngine.getInstance()
     .getModel(ModelName.ROUTE_PLAN);
  }
  @Override
  public void onRoutePlanFail() {
  }
  @Override
  public void onRoutePlanCanceled() {  }
  @Override
  public void onRoutePlanStart() {  } };}

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 130
码字总数 120077
作品 0
虹口
缓存篇(Cache)~第二回 使用static静态成员实现服务器端缓存(导航面包屑)~续

在写完首篇cache文章后,有些朋友给我来信,希望可以使用JS的方法来实现这个导航功能,所以,才有了这篇文章,JS与C#不同,它虽然有引用类型,但它不具备一些引用类型的特性,如它的方法...

mcy247
2017/12/06
0
0
捷讯分享阿里云服务器ECS如何升降配置

我们在日常用阿里云产品的时候都知道云服务器有升降配的操作,很大程度适应了大部分客户的需求。今天阿里云湖北授权服务中心的小编就跟大家简单的聊聊如何升降云服务器的配置。所谓升降配就是...

捷讯技术17
08/24
0
0
EF架构~系列目录

EF架构系列主是我在项目开发中,总结出现的一些经验性的东西,拿出来与大家分享,哪块与的有问题,还请大家指出来,然后我们一些再去讲究! EF架构~系列目录 第一回  EF架构~了解一下,ADO....

mcy247
2017/12/05
0
0
雨林木风115网盘融资过亿 或分拆上市

据可靠消息人士透露,雨林木风旗下网盘服务提供商——115网盘正在筹备融资,金额过亿元。该知情人士进一步透露,未来115网盘将从雨林木风体系 分拆,可能会成立公司独立运营。据了解,此次融...

老枪
2011/03/14
3.1K
31
人工智能公司ILIFE智意发布新品X800 首创震动水箱清洁技术

     4月24日消息,继上月黑科技产品W400亮相AWE展后,人工智能公司ILIFE智意今天正式发布年度旗舰产品天耀X800。据悉,这是自去年ILIFE智意天目X660发售以来,ILIFE智意推出的第二代视觉...

人工智能那点事
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

74.expect脚本同步文件以及指定host同步文件 构建分发系统文件和命令

20.31 expect脚本同步文件: 在expect脚本中去实现在一台机器上把文件同步到另外一台机器上去。核心命令用的是rsync ~1.自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -a...

王鑫linux
16分钟前
0
0
TypeScript项目引用(project references)

转发 TypeScript项目引用(project references) TypeScript新特性之项目引用(project references) 项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。 通过这...

durban
21分钟前
0
0
爬虫入门

导读 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取...

问题终结者
21分钟前
0
0
ppwjs之bootstrap文字排版:无序列表项不换行

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
27分钟前
0
0
SpringBoot 学习一

本文将从以下几个方面介绍: 前言 HelloWorld 读取配置文件 例子(CURD) 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架...

tsmyk0715
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部