android百度地图之公交线路详情搜索

android百度地图之公交线路详情搜索,第1张

概述本篇文章可以实现百度公交线路搜索,可以选择多条线路,具体实现代码如下:

本篇文章可以实现百度公交线路搜索,可以选择多条线路,具体实现代码如下:

一、公交线路详情检索

获取公交线路的详情主要分来两步,1.获取公交线路的UID,2.通过UID获取公交线路详情。

1.获取公交线路的UID:

/*     * 获得公交线路图的UID,并且根据系UID发起公交线路详情的检索     *      * @see     * com.baIDu.mapAPI.MKSearchListener#onGetPoiResult(com.baIDu.mapAPI     * .MKPoiResult,int,int)     */    @OverrIDe    public voID onGetPoiResult(MKPoiResult arg0,int arg1,int arg2) {      // Todo auto-generated method stub      if (arg0 == null || arg2 != 0) {        Toast.makeText(MainActivity.this,"未找到结果",1);        return;      }      // 定义一个公交线路描述类      MKPoiInfo mkPoiInfo = null;      // 获得本次就爱你所的公交线路的总站点      int totalPoiNum = arg0.getNumPois();      for (int i = 0; i < totalPoiNum; i++) {        mkPoiInfo = arg0.getPoi(i);        if (mkPoiInfo.ePoiType == 2) {          break;        }      }      mkSearch.buslinesearch("开封",mkPoiInfo.uID);    }

2.获取公交线路详情:

/*     * 得到公交线路图的详情     *      * @see     * com.baIDu.mapAPI.MKSearchListener#onGetBusDetailResult(com.baIDu.     * mapAPI.MKBuslineResult,int)     */    @OverrIDe    public voID onGetBusDetailResult(MKBuslineResult arg0,int arg1) {      // Todo auto-generated method stub      if (arg0 == null || arg1 != 0) {        Toast.makeText(MainActivity.this,1);        return;      }      RouteOverlay routeOverlay = new RouteOverlay(MainActivity.this,mapVIEw);      routeOverlay.setData(arg0.getBusRoute());// 获得公交线路      mapVIEw.getoverlays().clear();// 清楚公交站点的标识      mapVIEw.getoverlays().add(routeOverlay);      mapVIEw.invalIDate();      // 采用动画形式描述公交站点      mapVIEw.getController().animateto(arg0.getBusRoute().getStart());    }

查询时,只需提供城市名和线路

mkSearch.poiSearchInCity("开封","3");

完整代码:

package com.arlen.androID.baIDumap08;import androID.os.Bundle;import androID.vIEw.Menu;import androID.Widget.Toast;import com.baIDu.mapAPI.BMapManager;import com.baIDu.mapAPI.MKAddrInfo;import com.baIDu.mapAPI.MKBuslineResult;import com.baIDu.mapAPI.MKDrivingRouteResult;import com.baIDu.mapAPI.MKGeneralListener;import com.baIDu.mapAPI.MKPoiInfo;import com.baIDu.mapAPI.MKPoiResult;import com.baIDu.mapAPI.MKSearch;import com.baIDu.mapAPI.MKSearchListener;import com.baIDu.mapAPI.MKSuggestionResult;import com.baIDu.mapAPI.MKTransitRouteResult;import com.baIDu.mapAPI.MKWalkingRouteResult;import com.baIDu.mapAPI.MapActivity;import com.baIDu.mapAPI.MapVIEw;import com.baIDu.mapAPI.RouteOverlay;public class MainActivity extends MapActivity {  private BMapManager bMapManager;  private MapVIEw mapVIEw;  private String key = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A";  private MKSearch mkSearch;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    bMapManager = new BMapManager(MainActivity.this);    bMapManager.init(key,new MKGeneralListener() {      @OverrIDe      public voID onGetPermissionState(int arg0) {        // Todo auto-generated method stub      }      @OverrIDe      public voID onGetNetworkState(int arg0) {        // Todo auto-generated method stub      }    });    initMapActivity(bMapManager);    mapVIEw = (MapVIEw) findVIEwByID(R.ID.bmapVIEw);    mkSearch = new MKSearch();    mkSearch.init(bMapManager,new MySearchListener());    mkSearch.poiSearchInCity("开封","3");  }  private class MySearchListener implements MKSearchListener {    @OverrIDe    public voID onGetAddrResult(MKAddrInfo arg0,int arg1) {      // Todo auto-generated method stub    }    /*     * 得到公交线路图的详情     *      * @see     * com.baIDu.mapAPI.MKSearchListener#onGetBusDetailResult(com.baIDu.     * mapAPI.MKBuslineResult,mapVIEw);      routeOverlay.setData(arg0.getBusRoute());// 获得公交线路      mapVIEw.getoverlays().clear();// 清楚公交站点的标识      mapVIEw.getoverlays().add(routeOverlay);      mapVIEw.invalIDate();      // 采用动画形式描述公交站点      mapVIEw.getController().animateto(arg0.getBusRoute().getStart());    }    @OverrIDe    public voID onGetDrivingRouteResult(MKDrivingRouteResult arg0,int arg1) {      // Todo auto-generated method stub    }    @OverrIDe    public voID onGetPoIDetailSearchResult(int arg0,int arg1) {      // Todo auto-generated method stub    }    /*     * 获得公交线路图的UID,并且根据系UID发起公交线路详情的检索     *      * @see     * com.baIDu.mapAPI.MKSearchListener#onGetPoiResult(com.baIDu.mapAPI     * .MKPoiResult,mkPoiInfo.uID);    }    @OverrIDe    public voID onGetRGCShareUrlResult(String arg0,int arg1) {      // Todo auto-generated method stub    }    @OverrIDe    public voID onGetSuggestionResult(MKSuggestionResult arg0,int arg1) {      // Todo auto-generated method stub    }    @OverrIDe    public voID onGetTransitRouteResult(MKTransitRouteResult arg0,int arg1) {      // Todo auto-generated method stub    }    @OverrIDe    public voID onGetWalkingRouteResult(MKWalkingRouteResult arg0,int arg1) {      // Todo auto-generated method stub    }  }  @OverrIDe  protected voID onDestroy() {    // Todo auto-generated method stub    super.onDestroy();    if (bMapManager != null) {      bMapManager.destroy();      bMapManager = null;    }  }  @OverrIDe  protected voID onResume() {    // Todo auto-generated method stub    super.onResume();    if (bMapManager != null) {      bMapManager.start();    }  }  @OverrIDe  protected voID onPause() {    // Todo auto-generated method stub    super.onPause();    if (bMapManager != null) {      bMapManager.stop();    }  }  @OverrIDe  public boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.main,menu);    return true;  }  @OverrIDe  protected boolean isRoutedisplayed() {    // Todo auto-generated method stub    return false;  }}

二、多条线路显示

在同一个地图上显示多条导航线路,也只需要分两步完成,

1.定义起始点个终点

start = new MKPlanNode();    start.pt = new GeoPoint((int) (39.915 * 1E6),(int) (116.404 * 1E6));    end = new MKPlanNode();    end.pt = new GeoPoint(40057031,116307852);    mkSearch.transitSearch("北京",start,end);

2.将所有的线路详情循环显示在地图上

@OverrIDe    public voID onGetTransitRouteResult(MKTransitRouteResult arg0,int arg1) {      // Todo auto-generated method stub      if (arg0 == null) {        return;      }      int planNum = arg0.getNumPlan();// 获取所有的驾车路线      for (int i = 0; i < planNum; i++) {        TransitOverlay overlay = new TransitOverlay(MainActivity.this,mapVIEw);        overlay.setData(arg0.getPlan(i));        mapVIEw.getoverlays().add(overlay);      }      mapVIEw.invalIDate();      mapVIEw.getController().animateto(arg0.getStart().pt);    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的android百度地图之公交线路详情搜索全部内容,希望文章能够帮你解决android百度地图之公交线路详情搜索所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存