package com.example.mygaodeditu; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.amap.api.services.core.LatLonPoint; import com.amap.api.services.geocoder.GeocodeAddress; import com.amap.api.services.geocoder.GeocodeQuery; import com.amap.api.services.geocoder.GeocodeResult; import com.amap.api.services.geocoder.GeocodeSearch; import com.amap.api.services.geocoder.RegeocodeResult; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText Edit_start; private EditText Edit_End; private Button start_But; private String mStartPlace; private String mEndPlace; private GeocodeSearch mStart; private GeocodeSearch mEnd; //坐标点 private LatLonPoint mStratLat; private LatLonPoint mEndLat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); mStart = new GeocodeSearch(MainActivity.this); mEnd = new GeocodeSearch(MainActivity.this); } private void initView() { Edit_start = (EditText) findViewById(R.id.Edit_start); Edit_End = (EditText) findViewById(R.id.Edit_End); start_But = (Button) findViewById(R.id.start_But); start_But.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.start_But: mStartPlace = Edit_start.getText().toString().trim(); mEndPlace = Edit_End.getText().toString().trim(); if (mStartPlace.isEmpty() || mEndPlace.isEmpty()) { Toast.makeText(this, "参数不能为空", Toast.LENGTH_SHORT).show(); } else { initStart(); } break; } } private void initStart() { GeocodeQuery query = new GeocodeQuery(mStartPlace, null); mStart.getFromLocationNameAsyn(query); mStart.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() { @Override public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) { } @Override public void onGeocodeSearched(GeocodeResult geocodeResult, int i) { GeocodeAddress address = geocodeResult.getGeocodeAddressList().get(0); mStratLat = address.getLatLonPoint(); Log.e("看看开始经纬度", "经度是:" + mStratLat.getLongitude() + ",纬度是:" + mStratLat.getLatitude()); initEnd(); } }); } private void initEnd() { GeocodeQuery query = new GeocodeQuery(mEndPlace, null); mEnd.getFromLocationNameAsyn(query); mEnd.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() { @Override public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) { } @Override public void onGeocodeSearched(GeocodeResult geocodeResult, int i) { GeocodeAddress address = geocodeResult.getGeocodeAddressList().get(0); mEndLat = address.getLatLonPoint(); Log.e("看看结尾经纬度", "经度是:" + mEndLat.getLongitude() + ",纬度是:" + mEndLat.getLatitude()); Intent intent = new Intent(MainActivity.this, AtlasActivity.class); intent.putExtra("start", mStratLat); intent.putExtra("end", mEndLat); startActivity(intent); } }); } }
package com.example.mygaodeditu; import android.os.Bundle; import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import com.amap.api.maps.AMap; import com.amap.api.maps.MapView; import com.amap.api.services.core.LatLonPoint; import com.amap.api.services.route.BusRouteResult; import com.amap.api.services.route.DrivePath; import com.amap.api.services.route.DriveRouteResult; import com.amap.api.services.route.RideRouteResult; import com.amap.api.services.route.RouteSearch; import com.amap.api.services.route.WalkRouteResult; import com.example.mygaodeditu.overlay.DrivingRouteOverlay; public class AtlasActivity extends AppCompatActivity implements RouteSearch.OnRouteSearchListener { private MapView map; private AMap mapMap; private LatLonPoint mStart; private LatLonPoint mEnd; private RouteSearch routeSearch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_atlas); map = (MapView) findViewById(R.id.map); //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图 map.onCreate(savedInstanceState); if (mapMap == null) { mapMap = map.getMap(); } mStart = getIntent().getParcelableExtra("start"); mEnd = getIntent().getParcelableExtra("end"); routeSearch = new RouteSearch(this); routeSearch.setRouteSearchListener(this); //这个是死值 开始是马池口 //RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(new LatLonPoint(40.1767200000, 116.16502000000), new LatLonPoint(39.9111400000, 116.4113500000)); RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(mStart,mEnd); // fromAndTo包含路径规划的起点和终点,drivingMode表示驾车模式 // 第三个参数表示途经点(最多支持16个),第四个参数表示避让区域(最多支持32个),第五个参数表示避让道路 RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, RouteSearch.DrivingDefault, null, null, ""); routeSearch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询 // myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。 // myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。 // aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style // aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。 // aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。 } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图 map.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图 map.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制 map.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态 map.onSaveInstanceState(outState); } @Override public void onBusRouteSearched(BusRouteResult busRouteResult, int i) { } @Override public void onDriveRouteSearched(DriveRouteResult result, int i) { //自驾查询结果 mapMap.clear();// 清理地图上的所有覆盖物 final DrivePath drivePath = result.getPaths() .get(0); DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay( AtlasActivity.this, mapMap, drivePath, result.getStartPos(), result.getTargetPos(), null); drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示 drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true drivingRouteOverlay.removeFromMap(); drivingRouteOverlay.addToMap(); drivingRouteOverlay.zoomToSpan(); } @Override public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) { } @Override public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) { } }