文档章节

导航--续

 易水寒521
发布于 2015/06/11 16:25
字数 688
阅读 234
收藏 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() {  } };}

© 著作权归作者所有

上一篇: 练习
下一篇: 导航
粉丝 1
博文 130
码字总数 120077
作品 0
虹口
私信 提问
缓存篇(Cache)~第二回 使用static静态成员实现服务器端缓存(导航面包屑)~续

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

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

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

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

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

mcy247
2017/12/05
0
0
电商促销活动功能参考

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

chaogetu
2015/05/07
26
0
人工智能公司ILIFE智意发布新品X800 首创震动水箱清洁技术

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

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

没有更多内容

加载失败,请刷新页面

加载更多

IDEA ----Lombok工具 (用于简化 javaBean 的编写)

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。 1. 在项目中的pom.xml确定版本...

安然_oschina
37分钟前
6
0
RPA开发教程丨RPA+NLP邮件智能分析

RPA+NLP邮件项目背景 随着公司规模的不断扩大,公司商务邮箱里面的邮件也越来越多,而业务人员在繁忙的工作期,必须加班加点投入其中,由此,对邮件进行智能分析自动处理,变成了一种迫切需求...

UiBot
40分钟前
7
0
【百度AI语音合成】会员到访门店语音提醒

每次会员到访都需要。会员自主结账或找导购才能被发现。或者需要一个人员站在门口,并且对会员都全部了解,才能对会员到访进行更好服务的接待。 小帅为了免去这些操作呢。就想到了百度AI。语...

小帅帅丶
42分钟前
7
0
markdown语言使用

md基础入门 标题 使用一级标题hello world! Hello World! 其他类型的标题展示 一级标题 二级标题 三级标题 四级标题 五级标题 ######六级标题 ##段落换行 换行时有两种 末尾空2个空格 用一个...

writeademo
47分钟前
11
0
nginx启动无反应,看了logs下面的error.log后发现could not build server_names_hash错误

could not build server_names_hash, you should increase server_names_hash_bucket_size: 32 应该是说你的server_names配置太多了,超过了默认的32个字符 要加大 在http段里面添加 server...

yoblue
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部