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