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

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

一、公交线路详情检索

获取公交线路的详情主要分来两步,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, 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());
    }

    @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, 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);
    }

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索百度地图api
公交线路
android百度地图搜索、android地图搜索功能、android 高德地图搜索、android地图搜索、详情 综合搜索 企查查,以便于您获取更多的相关知识。

时间: 2024-12-03 09:05:50

android百度地图之公交线路详情搜索_Android的相关文章

Android百度地图自定义公交路线导航_Android

一.问题描述 基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示 二.通用组件Application类,主要创建并初始化BMapManager public class App extends Application { static App mDemoApp; //百度MapAPI的管理类 public BMapManager mBMapMan = null; // 授权Key // 申请地址:http://dev.baidu.com/wiki/static/imap/key/ p

Android百度地图自定义公交路线导航

一.问题描述 基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示 二.通用组件Application类,主要创建并初始化BMapManager public class App extends Application { static App mDemoApp; //百度MapAPI的管理类 public BMapManager mBMapMan = null; // 授权Key // 申请地址:http://dev.baidu.com/wiki/static/imap/key/ p

通过百度地图获取公交线路的站点坐标的js代码_javascript技巧

最近做百度地图的模拟数据,需要获取某条公交线路沿途站点的坐标信息,貌似百度没有现成的API,因此做了一个模拟页面,工具而已,IE6/7/8不支持 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>获取公交站点坐标</title> <style type="text/css"> html,b

Android百度地图应用之基本地图功能实现_Android

一.简介 1.地图 地图展示:普通地图(2D,3D).卫星图和实时交通图.  地图操作:可通过接口或手势控制来实现地图的点击.双击.长按.缩放.平移.旋转.改变视角等操作.  2.地图类型百度地图Android SDK 3.6.1提供了两种类型的地图资源(普通矢量地图和卫星图,设置办法见demo04),如果不指定地图类型,默认为普通矢量地图.  此示例仅演示普通矢量图的基本用法. 3.本示例功能描述该例子介绍如何构建一个基础的地图页面,并演示如何显示以自定义的经纬度坐标为中心点的百度地图.  简

Android百度地图应用之MapFragment的使用_Android

一.简介  TextureMapFragment:用于显示地图片段. 二.示例3--Demo03MapFragment.cs  文件名:Demo02MapFragment.cs  简介:介绍在Fragment框架下使用地图  详述:介绍如何在Fragment框架下添加一个TextureMapFragment控件:  1.运行截图 在x86模拟器中运行的效果如下:  2.设计步骤  在上一节例子的基础上,只需要再增加下面的步骤即可.  (1)修改布局文件 将demo02_fragment.xml换

【百度地图API】如何制作公交线路的搜索?如331路

原文:[百度地图API]如何制作公交线路的搜索?如331路 摘要: 从A点到B点的公交导航大家都知道怎么做了,那么单独查询331路公交车的公交路线,如何制作呢?我们一起来学习一下~ ----------------------------------------------------------------------------------------------------------------- 一.创建地图和网页样式 两句话建立地图: var map = new BMap.Map("

[android] 百度地图开发 (二).定位城市位置和城市POI搜索

一. 百度地图城市定位和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置.定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?      通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法可以获取Location对象,再定位经纬度设置其为地图中心即可显示当前

Android 百度地图POI搜索功能实例代码_Android

在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这三个字母,决定认认真真的搜索一些POI具体的含义. POI是英文的缩写,原来的单词是point of interest, 直译成中文就是兴趣点的意思.兴趣点这个词最早来自于导航地图厂商.地图厂商为了提供尽可能多的位置信息,花费了很大的精力去寻找诸如加油站,餐馆,酒店,景点等目的地,这些目的地其实都可

Android 百度地图POI搜索功能实例代码

在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这三个字母,决定认认真真的搜索一些POI具体的含义. POI是英文的缩写,原来的单词是point of interest, 直译成中文就是兴趣点的意思.兴趣点这个词最早来自于导航地图厂商.地图厂商为了提供尽可能多的位置信息,花费了很大的精力去寻找诸如加油站,餐馆,酒店,景点等目的地,这些目的地其实都可