android-2(集成高德地图,定位显示)

由于在应用中要用到地图的实时导航功能,因此在需要在app中集成地图插件,这里集成的是高德地图。

高德地图有自己的api开放平台,高德地图开放平台http://lbs.amap.com,资料都有。

做了个简单的归纳


1.首先到高德地图开放平台http://lbs.amap.com上下载开发库,对于定位显示来说需要两个库

地图库

AMap_3DMap_V3.3.1_20160419.jar和一些依赖的so库

定位库

AMap_Location_V2.4.1_20160414.jar 


2.注册一个高德开发者,获得一个key,这个key以后在使用sdk时需要用到。

3.在androidManiFest.xml中依次添加权限,key,service

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

  添加key标签

<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="申请的key"/>
添加定位服务

<service android:name="com.amap.api.location.APSService"></service>

4.在activity_main.xml中把mapView加载起来

<com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

5.在MainActivity中实现 LocationSour ce, AMapLocationListener,OnCheckedChangeListener

我们绘制地图主要用到MapView类和Amap类,在activity生命周期状态变化的时候我们的mapView也要紧跟着变化

重写onResume,onPause等

 @Override
    protected void onDestroy() {
    	// TODO Auto-generated method stub
    	super.onDestroy();
    	mapView.onDestroy();
    }

重写三个方法

public void activate(OnLocationChangedListener listener)  //激活

public void deactivate()   //消除

public void onLocationChanged(AMapLocation amapLocation)  //回调


@Override
	public void activate(OnLocationChangedListener listener) {
		// TODO Auto-generated method stub
		mListener = listener;
		if (mlocationClient == null) {
			mlocationClient = new AMapLocationClient(this);
			mLocationOption = new AMapLocationClientOption();
			//设置定位监听
			mlocationClient.setLocationListener(this);
			//设置为高精度定位模式
			mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
			//设置定位参数
			mlocationClient.setLocationOption(mLocationOption);
			// 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
			// 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
			// 在定位结束后,在合适的生命周期调用onDestroy()方法
			// 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
			mlocationClient.startLocation();
		}
	}


	@Override
	public void deactivate() {
		// TODO Auto-generated method stub
		mListener = null;
		if (mlocationClient != null) {
			mlocationClient.stopLocation();
			mlocationClient.onDestroy();
		}
		mlocationClient = null;
	}


	@Override
	public void onLocationChanged(AMapLocation amapLocation) {
		// TODO Auto-generated method stub
		if (mListener != null && amapLocation != null) {
			if (amapLocation != null
					&& amapLocation.getErrorCode() == 0) {
				mLocationErrText.setVisibility(View.GONE);
				mListener.onLocationChanged(amapLocation);// 显示系统小蓝点
			} else {
				String errText = "定位失败," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo();
				Log.e("AmapErr",errText);
				mLocationErrText.setVisibility(View.VISIBLE);
				mLocationErrText.setText(errText);
			}
		}
	}

这只是简单的应用,具体拓展可以见api资料。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值