百度地图开发第五天(649公交线路查询)

来源:互联网 发布:苏州淘宝店出租 编辑:程序博客网 时间:2024/04/29 12:10

代码:

  

package com.android.mybaidu;

import android.os.Bundle;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
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 Main extends MapActivity {
 /** Called when the activity is first created. */

 // 添加百度地图的相关控件
 private MapView mapView;
 private BMapManager bMapManager;// 加载地图的引擎
 // 百度地图的key
 private String keyString = "A270F85CD72A01E8519A9677A75FB4016ED9A5A3" ;
 private MKSearch mkSearch;//用于检索的类

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  mapView = (MapView) this.findViewById(R.id.bmapView);
  bMapManager = new BMapManager(Main.this);
  // 必须要加载key
  bMapManager.init(keyString, new MKGeneralListener() {

   @Override
   public void onGetPermissionState(int arg0) {
    // TODO Auto-generated method stub
    if (arg0 == 300) {
     Toast.makeText(Main.this, "输入的Key有错!请核实!!", 1).show();
    }
   }

   @Override
   public void onGetNetworkState(int arg0) {
    // TODO Auto-generated method stub

   }
  });
   /*initMapActivity(arg0)是MapActivity的一个方法,
         * MapActivity管理显示MapView中Activity 处理逻辑的基础类,
         * initMapActivity初始化这个类
        */
  this.initMapActivity(bMapManager);
  mkSearch=new MKSearch();
   mapView.getController().setCenter(new GeoPoint((int) (39.244 * 1E6),
     (int) (117.052 * 1E6)));
  mkSearch.init(bMapManager, new MySearchListener());
  mkSearch.poiSearchInCity("天津","649");//查询的城市的名称和公交线路
 
  
 }
 public class MySearchListener implements MKSearchListener{

  @Override
  public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
   // TODO Auto-generated method stub
   
  }

  @Override
  public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
   // 得到公交线路图的详情
   if(arg0==null ||arg1 !=0){
    Toast.makeText(Main.this, "对不起未找到结果", 1).show();
    return;
   }
   RouteOverlay routeOverlay=new RouteOverlay(Main.this, 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) {

 

  }

  @Override
  public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
   // 获得公交线路图的uid,也就是这条公交线路图的唯一的标示,并且根据此uid来发起公交线路详情的检索。
   if(arg0==null ||arg2 !=0){
    Toast.makeText(Main.this, "对不起未找到结果", 1).show();
    return;
   }
   //定义一个公交线路图的描述累
   MKPoiInfo mkPoiInfo = null;//MKPoiInfo可以当前点的地址信息等
   int tota=arg0.getNumPois();//获得本地公交线路的棕垫
   for(int i=0;i<tota;i++){
    mkPoiInfo=arg0.getPoi(i);
    /*
     *
           ePoiType:
           poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路,

     */
    if(mkPoiInfo.ePoiType==2){
     break;
    }
   }
   mkSearch.busLineSearch("天津", mkPoiInfo.uid);//得到uid
  }

  @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) {
 
  }
  
 }


 @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
 protected boolean isRouteDisplayed() {
  // TODO Auto-generated method stub
  return false;
 }
}

 

 

主要知识点:

             (1)查询的城市的名称和公交线路:

                     mkSearch.poiSearchInCity("天津","649");

             (2)方法:public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) 得到公交线路图的详情
                                  没有找到结果:

                                  if(arg0==null ||arg1 !=0){
                                     Toast.makeText(Main.this, "对不起未找到结果", 1).show();
                                                     return;
                                                               }
                                            RouteOverlay routeOverlay=new RouteOverlay(Main.this, mapView);

                                         获得公交路线:
                                           routeOverlay.setData(arg0.getBusRoute());

                                         清除公交标志:
                                           mapView.getOverlays().clear();
                                           mapView.getOverlays().add(routeOverlay);
                                           mapView.invalidate();
                                         采用动画形式描述公交站点:
                                           mapView.getController().animateTo(arg0.getBusRoute().getStart());

                        (3)方法public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2)  获得公交线路图的uid,也就是这条公交线路图的唯一的标示,并且根据此uid来发起公交线路详情的检索。

                                  没有找到结果:

                                    if(arg0==null ||arg2 !=0){
                                   Toast.makeText(Main.this, "对不起未找到结果", 1).show();
                                          return;
                                           }

                                 MKPoiInfo表示当前点的地址信息等:

                                         MKPoiInfo mkPoiInfo = null;

                                  获得本地公交线路的综述:

                                      int tota=arg0.getNumPois();

                               找到公家线路:

                               for(int i=0;i<tota;i++){
                                       mkPoiInfo=arg0.getPoi(i);
                                ePoiType:   poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路,
                                           if(mkPoiInfo.ePoiType==2){
                                                                   break;
                                                                               }

                                     mkPoilnfo.uid得到天津的uid:
                                                mkSearch.busLineSearch("天津", mkPoiInfo.uid);

 

                              

                                  

 

                         

0 0