Android(安卓)高德地图驾车路线规划
16lz
2021-12-04
public class AmapDetailActivity extends Activity implements RouteSearch.OnRouteSearchListener, AMap.OnMapClickListener, AMap.OnMarkerClickListener, AMap.OnInfoWindowClickListener, AMap.InfoWindowAdapter { private MapView mapView; private AMap aMap; String latitude; String longitude; String supplierLat; String supplierLog; private RouteSearch mRouteSearch; protected LatLonPoint mEndLatlng ; protected LatLonPoint mStartLatlng ; private DriveRouteResult mDriveRouteResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail_amap); mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 此方法必须重写
ButterKnife.inject(this);
//起点和终点的经纬度(测试的话随便弄两个经纬度进去)
supplierLat = getIntent().getStringExtra( "supplierLat") ; supplierLog = getIntent().getStringExtra("supplierLng");
latitude = getIntent().getStringExtra("latitude");
longitude = getIntent().getStringExtra("longitude");
init();
setfromandtoMarker();}
private void setfromandtoMarker() { aMap.addMarker(new MarkerOptions() .position(AMapUtil.convertToLatLng(mStartLatlng)) .icon(BitmapDescriptorFactory.fromResource(R.drawable.start))); aMap.addMarker(new MarkerOptions() .position(AMapUtil.convertToLatLng(mEndLatlng)) .icon(BitmapDescriptorFactory.fromResource(R.drawable.end))); } /** * 初始化AMap对象 */ private void init() { if (aMap == null) { aMap = mapView.getMap(); }// registerListener(); mRouteSearch = new RouteSearch(this); mRouteSearch.setRouteSearchListener(this); mStartLatlng = new LatLonPoint(Double.valueOf(supplierLat), Double.valueOf(supplierLog)); mEndLatlng = new LatLonPoint(Double.valueOf(latitude), Double.valueOf(longitude)); final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo( mStartLatlng, mEndLatlng); RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, RouteSearch.DrivingDefault, null, null, "");// 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路 mRouteSearch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询 } private void registerListener() { aMap.setOnMapClickListener(AmapDetailActivity.this); aMap.setOnMarkerClickListener(AmapDetailActivity.this); aMap.setOnInfoWindowClickListener(AmapDetailActivity.this); aMap.setInfoWindowAdapter(AmapDetailActivity.this); } /** * 方法必须重写 */ @Override public void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override public void onPause() { super.onPause(); mapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override protected void onClick(View v) { } @Override public void onBusRouteSearched(BusRouteResult busRouteResult, int i) { } @Override public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int i) { aMap.clear(); if (i == 1000) { if (driveRouteResult != null && driveRouteResult.getPaths() != null) { if (driveRouteResult.getPaths().size() > 0) { mDriveRouteResult = driveRouteResult; final DrivePath drivePath = mDriveRouteResult.getPaths() .get(0); DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(this, aMap, drivePath, driveRouteResult.getStartPos(), driveRouteResult.getTargetPos()); drivingRouteOverlay.removeFromMap(); drivingRouteOverlay.setNodeIconVisibility(false);//隐藏转弯的节点 drivingRouteOverlay.addToMap(); drivingRouteOverlay.zoomToSpan(); } } } } @Override public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) { } @Override public void onMapClick(LatLng latLng) { } @Override public boolean onMarkerClick(Marker marker) { return false; } @Override public void onInfoWindowClick(Marker marker) { } @Override public View getInfoWindow(Marker marker) { return null; } @Override public View getInfoContents(Marker marker) { return null; }}
更多相关文章
- Android(安卓)studio maven pom.xml
- 解析ANDROID ps命令执行后各项参数的含义
- Android与H5相机、相册笔记
- Android之MediaStore应用
- execlp启动android进程命令窗口通过adb shell 进入android 的Lin
- Android(安卓)MediaStore数据之增删查改剖析
- Android(安卓)小项目之--SQLite 使用法门 (附源码)
- 浅谈Android的Rotation动画的应用
- android 布局中 layout_gravity、gravity、orientation、layout_