高德地图android sdk 地图显示和定位 基本使用方法

首先,定位和地图是分开的,定位有定位的sdk,地图有地图的sdk

地图显示分为MapView和 AMap 两个类

MapView重写activity内的基本所有生命周期方法

Amap由mapview产生:aMap = mapView.getMap();

其实amap才是真正操纵地图显示的类

amap的设置方法:

	/**
	 * 设置一些amap的属性
	 */
	private void setUpMap() {
		// 自定义系统定位小蓝点
		MyLocationStyle myLocationStyle = new MyLocationStyle();
		myLocationStyle.myLocationIcon(BitmapDescriptorFactory
				.fromResource(R.drawable.location_marker));// 设置小蓝点的图标
		myLocationStyle.strokeColor(Color.BLACK);// 设置圆形的边框颜色
		// myLocationStyle.radiusFillColor(color)//设置圆形的填充颜色
		// myLocationStyle.anchor(int,int)//设置小蓝点的锚点
		myLocationStyle.strokeWidth(0.1f);// 设置圆形的边框粗细
		aMap.setMyLocationStyle(myLocationStyle);
		aMap.setMyLocationRotateAngle(180);
		aMap.setLocationSource(this);// 设置定位监听
		aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示
		aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
	}

aMap.setMyLocationEnabled(true)要定位的话一定要设置这个 其中aMap.setLocationSource(this);// 设置定位监听,this是实现了LocationSource接口的 public void activate(OnLocationChangedListener listener)方法,方法内一般这样写:

	 * 激活定位
	 */
	@Override
	public void activate(OnLocationChangedListener listener) {
		mListener = listener;
		if (mAMapLocationManager == null) {
			mAMapLocationManager = LocationManagerProxy.getInstance(this);
			/*
			 * mAMapLocManager.setGpsEnable(false);
			 * 1.0.2版本新增方法,设置true表示混合定位中包含gps定位,false表示纯网络定位,默认是true Location
			 * API定位采用GPS和网络混合定位方式
			 * ,第一个参数是定位provider,第二个参数时间最短是5000毫秒,第三个参数距离间隔单位是米,第四个参数是定位监听者
			 */
			mAMapLocationManager.requestLocationUpdates(
					LocationProviderProxy.AMapNetwork, 5000, 10, this);
		}
	}


mAMapLocationManager的初始化和设置也可以放到其他地方,这个是定位真正开启定位的地方


mAMapLocationManager.requestLocationUpdates( LocationProviderProxy.AMapNetwork, 5000, 10, this)中的this是AMapLocationListener,定位成功后会回调:

/**
	 * 定位成功后回调函数
	 */
	@Override
	public void onLocationChanged(AMapLocation aLocation) {
		if (mListener != null && aLocation != null) {
			mListener.onLocationChanged(aLocation);// 显示系统小蓝点
			float bearing = aMap.getCameraPosition().bearing;
			aMap.setMyLocationRotateAngle(bearing);// 设置小蓝点旋转角度
		}
	}
如方法内所示,只要在方法中设置mListener.onLocationChanged(aLocation);就可实现mapview显示定位的地点,

(mListener是在public void activate(OnLocationChangedListener listener)作为参数传进来的)




你可能感兴趣的:(Android)