Android 百度地图路径规划

来源:互联网 发布:什么是伴随矩阵,怎么求 编辑:程序博客网 时间:2024/05/03 03:13

本文提供的是百度地图路径规划写法中的乘坐公交车的路径规划方式


以下是本文涉及的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".RouteActivity" >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:orientation="vertical" >
        
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/startPoint_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="起点:" />


        <EditText
            android:id="@+id/startPoint_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="出发地..." >
        <requestFocus />
        </EditText>


</LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/endPoint_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="终点:" />


        <EditText
            android:id="@+id/endPoint_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="目的地..." />


</LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <Button
            android:id="@+id/drive"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="驾车搜索"
            android:onClick="SearchButton"
            android:layout_weight="1" />
        <Button
            android:id="@+id/bus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="公交搜索"
            android:onClick="SearchButton"
            android:layout_weight="1" />
        <Button
            android:id="@+id/walk"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="步行搜索"
            android:onClick="SearchButton"
            android:layout_weight="1" />


</LinearLayout>

</LinearLayout>
    
    
    <com.baidu.mapapi.map.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    
    


</LinearLayout>


以下是本文涉及的具体类,所需jar包或用户权限请参考:Android 百度地图定位

public class RouteActivity extends Activity implements BaiduMap.OnMapClickListener,

OnGetRoutePlanResultListener{

private EditText editSt,editEn;
private MapView mapView;
private BaiduMap map;
private RoutePlanSearch search;
private RouteLine route;
private int nodeIndex = -1;
private OverlayManager routeOverlay = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);  
        //  
        SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_route);

mapView = (MapView) findViewById(R.id.map);
editSt = (EditText) findViewById(R.id.startPoint_et);
editEn = (EditText) findViewById(R.id.endPoint_et);

map = mapView.getMap();

map.setOnMapClickListener(this);

search = RoutePlanSearch.newInstance();
search.setOnGetRoutePlanResultListener(this);
}


public void SearchButton(View v){
route = null;

PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", editSt.getText().toString());
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", editEn.getText().toString());

switch (v.getId()) {
case R.id.drive:

break;
case R.id.bus:
search.transitSearch((new TransitRoutePlanOption())
.from(stNode)
.city("北京")
.to(enNode));
break;
case R.id.walk:

break;
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_route, menu);
return true;
}


@Override
public void onMapClick(LatLng arg0) {
map.hideInfoWindow();
}


@Override
public boolean onMapPoiClick(MapPoi arg0) {
return false;
}



@Override
public void onGetDrivingRouteResult(DrivingRouteResult result) {

}


@Override
public void onGetTransitRouteResult(TransitRouteResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
            Toast.makeText(RouteActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
        }
        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
            //起终点或途经点地址有岐义,通过以下接口获取建议查询信息
            //result.getSuggestAddrInfo()
            return;
        }
        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
            nodeIndex = -1;
            route = result.getRouteLines().get(0);
            TransitRouteOverlay overlay = new TransitRouteOverlay(map);
            map.setOnMarkerClickListener(overlay);
            routeOverlay = overlay;
            overlay.setData(result.getRouteLines().get(0));
            overlay.addToMap();
            overlay.zoomToSpan();
        }
}


@Override
public void onGetWalkingRouteResult(WalkingRouteResult result) {

}

}
0 0
原创粉丝点击