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

来源:互联网 发布:淘宝sma是雪梨的店吗 编辑:程序博客网 时间:2024/04/27 09:18

代码:

         

package com.android.mybaidu;

import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
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.MKPlanNode;
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.Overlay;
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;//用于检索的类
 //定义一个起始点和终点。
 private MKPlanNode start;
 private MKPlanNode end;
 @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();
  mkSearch.init(bMapManager, new MySearchListener());
  start=new MKPlanNode();
  start.pt= new GeoPoint((int) (39.244 * 1E6),
    (int) (117.052 * 1E6));
   mapView.getController().setCenter(new GeoPoint((int) (39.244 * 1E6),
     (int) (117.052 * 1E6)));
   end=new MKPlanNode();
   end.pt=new GeoPoint((int) (39.083412 * 1E6),
     (int) (117.20188 * 1E6));
   /*
    * transitSearch公交路线搜索:
               public int transitSearch(java.lang.String city,
                         MKPlanNode start,
                         MKPlanNode end)
                                                    异步函数,返回结果在MKSearchListener里的onGetTransitRouteResult方法通知


                                  参数:
             city - 城市名,用于在哪个城市内进行检索(必须填写)
             start - 检索的起点,可通过关键字,坐标,两种方式指定
             end - 检索的终点,可通过关键字,坐标,两种方式指定
                                 返回:成功返回0,否则返回-1
    *
    *
    */
   mkSearch.transitSearch("天津", start, end);
 }
 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) {
   // TODO Auto-generated method stub
   
  }

  @Override
  public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {

 

  }

  @Override
  public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
   // 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) {
   // 公交路线查询方法
   if(arg0==null){
    return;
   }
   /*RouteOverlay说明:
    * 使用SDK内置图标及展现方式展示路线信息
                                          通过setdata接口设置路线数据
                */
   RouteOverlay routeOverlay=new RouteOverlay(Main.this, mapView);
   routeOverlay.setData(arg0.getPlan(0).getRoute(0));//MKRoute此类表示一条驾乘或步行路线
   mapView.getOverlays().add(routeOverlay);
   mapView.invalidate();
   
  }

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

  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;
 }
}

 

 

 

主要知识:transitSearch公交路线搜索,   异步函数,返回结果在MKSearchListener里的onGetTransitRouteResult方法通知三个参数

                   参数:
                         city - 城市名,用于在哪个城市内进行检索(必须填写)
                        start - 检索的起点,可通过关键字,坐标,两种方式指定
                         end - 检索的终点,可通过关键字,坐标,两种方式指定
                                 返回:成功返回0,否则返回-1

                      公交路线查询的方法:  public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) 

0 0
原创粉丝点击