当前位置:操作系统 > 安卓/Android >>

百度地图之路线规划

在前面的一篇文章中介绍过查询公交路线,不过那是根据公交路线的编号进行查询,而且也只是按公交搜索,在本文中,将介绍根据起终点按驾车、公交、步行三种方式进行搜索,功能更为强大,而且同样可以浏览节点,不过百度Demo提供的示例只能在北京市进行搜索,如果要在其他地方进行搜索需要更改源代码,初始化为其他城市,这里,我将起终点城市也在界面上来进行获取,使用起来就更加方便了,代码如下:
 
主Activity(RoutePlanActivity):
 
[java]  
package com.home;  
  
import java.util.ArrayList;  
  
import android.app.Activity;  
import android.content.Intent;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.TextView;  
import android.widget.Toast;  
  
import com.baidu.mapapi.map.MKEvent;  
import com.baidu.mapapi.map.MKMapTouchListener;  
import com.baidu.mapapi.map.MapView;  
import com.baidu.mapapi.map.PopupClickListener;  
import com.baidu.mapapi.map.PopupOverlay;  
import com.baidu.mapapi.map.RouteOverlay;  
import com.baidu.mapapi.map.TransitOverlay;  
import com.baidu.mapapi.search.MKAddrInfo;  
import com.baidu.mapapi.search.MKBusLineResult;  
import com.baidu.mapapi.search.MKCityListInfo;  
import com.baidu.mapapi.search.MKDrivingRouteResult;  
import com.baidu.mapapi.search.MKPlanNode;  
import com.baidu.mapapi.search.MKPoiInfo;  
import com.baidu.mapapi.search.MKPoiResult;  
import com.baidu.mapapi.search.MKRoute;  
import com.baidu.mapapi.search.MKSearch;  
import com.baidu.mapapi.search.MKSearchListener;  
import com.baidu.mapapi.search.MKShareUrlResult;  
import com.baidu.mapapi.search.MKSuggestionResult;  
import com.baidu.mapapi.search.MKTransitRouteResult;  
import com.baidu.mapapi.search.MKWalkingRouteResult;  
import com.baidu.platform.comapi.basestruct.GeoPoint;  
  
/** 
 * 此demo用来展示如何进行驾车、步行、公交路线搜索并在地图使用RouteOverlay、TransitOverlay绘制 
 * 同时展示如何进行节点浏览并弹出泡泡 
 *  
 */  
public class RoutePlanActivity extends Activity {  
  
    // UI相关  
    Button mBtnDrive = null; // 驾车搜索  
    Button mBtnTransit = null; // 公交搜索  
    Button mBtnWalk = null; // 步行搜索  
    Button mBtnCusRoute = null; // 自定义路线  
    Button mBtnCusIcon = null; // 自定义起终点图标  
    EditText startCityText;  
    EditText endCityText;  
  
    // 浏览路线节点相关  
    Button mBtnPre = null;// 上一个节点  
    Button mBtnNext = null;// 下一个节点  
    int nodeIndex = -2;// 节点索引,供浏览节点时使用  
    MKRoute route = null;// 保存驾车/步行路线数据的变量,供浏览节点时使用  
    TransitOverlay transitOverlay = null;// 保存公交路线图层数据的变量,供浏览节点时使用  
    RouteOverlay routeOverlay = null;  
    boolean useDefaultIcon = false;  
    int searchType = -1;// 记录搜索的类型,区分驾车/步行和公交  
    private PopupOverlay pop = null;// 弹出泡泡图层,浏览节点时使用  
    private TextView popupText = null;// 泡泡view  
    private View viewCache = null;  
  
    // 地图相关,使用继承MapView的MyRouteMapView目的是重写touch事件实现泡泡处理  
    // 如果不处理touch事件,则无需继承,直接使用MapView即可  
    MapView mMapView = null; // 地图View  
    // 搜索相关  
    MKSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用  
  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        DemoApplication app = (DemoApplication) this.getApplication();  
        setContentView(R.layout.activity_routeplan);  
        CharSequence titleLable = "路线规划功能";  
        setTitle(titleLable);  
        // 初始化地图  
        mMapView = (MapView) findViewById(R.id.bmapView);  
        mMapView.setBuiltInZoomControls(false);  
        mMapView.getController().setZoom(12);  
        mMapView.getController().enableClick(true);  
  
        // UI初始化  
        mBtnDrive = (Button) findViewById(R.id.drive);  
        mBtnTransit = (Button) findViewById(R.id.transit);  
        mBtnWalk = (Button) findViewById(R.id.walk);  
        mBtnPre = (Button) findViewById(R.id.pre);  
        mBtnNext = (Button) findViewById(R.id.next);  
        mBtnCusRoute = (Button) findViewById(R.id.custombutton);  
        mBtnCusIcon = (Button) findViewById(R.id.customicon);  
        mBtnPre.setVisibility(View.INVISIBLE);  
        mBtnNext.setVisibility(View.INVISIBLE);  
        startCityText = (EditText) findViewById(R.id.activity_editText_startcity);  
        endCityText = (EditText) findViewById(R.id.activity_editText_endcity);  
  
        // 按键点击事件  
        OnClickListener clickListener = new OnClickListener() {  
            public void onClick(View v) {  
                // 发起搜索  
                SearchButtonProcess(v);  
            }  
        };  
        OnClickListener nodeClickListener = new OnClickListener() {  
            public void onClick(View v) {  
                // 浏览路线节点  
                nodeClick(v);  
            }  
        };  
   
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,