具体的参考高德开发平台
Activity:
public class MainActivity extends AppCompatActivity implements GeocodeSearch.OnGeocodeSearchListener {
private MapView mMapView;
AMap aMap;
MyLocationStyle myLocationStyle;
private GeocodeSearch geocoderSearch;
// public AMapLocationClient mLocationClient = null;
// public AMapLocationListener mLocationListener = new AMapLocationListener() {
// @Override
// public void onLocationChanged(AMapLocation aMapLocation) {
//
// }
// };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.map);
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
mMapView.onCreate(savedInstanceState);
//初始化地图控制器对象
if (aMap == null) {
aMap = mMapView.getMap();
}
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表示隐藏定位蓝点并不进行定位,默认是fals
geocoderSearch = new GeocodeSearch(this);
geocoderSearch.setOnGeocodeSearchListener(this);
aMap.setOnMyLocationChangeListener(new AMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLonPoint latLonPoint = new LatLonPoint(location.getLatitude(), location.getLongitude());
RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200,GeocodeSearch.AMAP);
geocoderSearch.getFromLocationAsyn(query);
}
});
// 第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
// LatLonPoint latLonPoint = null;
// RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200,GeocodeSearch.AMAP);
// geocoderSearch.getFromLocationAsyn(query);
//声明AMapLocationClient类对象
//声明定位回调监听器
//初始化定位
// mLocationClient = new AMapLocationClient(getApplicationContext());
设置定位回调监听
// mLocationClient.setLocationListener(mLocationListener);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
mMapView.onDestroy();
mMapView.onDestroy();
AMapLocationClient mlocationClient = null;
if(null != mlocationClient){
mlocationClient.onDestroy();
}
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
mMapView.onPause();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
mMapView.onSaveInstanceState(outState);
}
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
regeocodeResult.getRegeocodeAddress().getCity();
}
@Override
public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
}
}