您的位置:首页 > 移动开发 > Android开发

Android 百度地图路径规划

2015-10-24 13:12 393 查看
本文提供的是百度地图路径规划写法中的乘坐公交车的路径规划方式

以下是本文涉及的布局:

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: