文档章节

导航--续

 易水寒521
发布于 2015/06/11 16:25
字数 688
阅读 218
收藏 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.2K
31
电商促销活动功能参考

1 团购 1.1 平台-团购管理 1.1.1 团购活动 管理员可以审核新的团购活动申请、取消进行中的团购活动或者删除团购活动。 搜索条件:团购名称 + 店铺名称 + 状态 数据表格: 团购名称 开始时间 ...

chaogetu
2015/05/07
15
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
1
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
昨天
2
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部