public void initGD() { //声明定位回调监听器 AMapLocationListener mLocationListener = new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation amapLocation) { if (amapLocation != null) { int errorCode = amapLocation.getErrorCode(); Log.e("AAA","AA"+errorCode); if ( errorCode == 0) { //可在其中解析amapLocation获取相应内容。 String province = amapLocation.getProvince();//省信息 String city = amapLocation.getCity();//城市信息 String district = amapLocation.getDistrict();//城区信息 String street = amapLocation.getStreet();//街道信息 String streetNum = amapLocation.getStreetNum();//街道门牌号信息 final String userAddr = city+","+district+","+street; Log.e("province", province+"信息"); } else { //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。 Log.e("AmapError", "location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo()); } } } }; //初始化定位 //声明AMapLocationClient类对象 AMapLocationClient mLocationClient = new AMapLocationClient(this); //设置定位回调监听 mLocationClient.setLocationListener(mLocationListener); //初始化AMapLocationClientOption对象 //声明AMapLocationClientOption对象 AMapLocationClientOption mLocationOption = new AMapLocationClientOption(); //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //获取一次定位结果: //该方法默认为false。 mLocationOption.setOnceLocation(true); //获取最近3s内精度最高的一次定位结果: //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。 mLocationOption.setOnceLocationLatest(true); //设置是否返回地址信息(默认返回地址信息) mLocationOption.setNeedAddress(true); //设置是否允许模拟位置,默认为true,允许模拟位置 mLocationOption.setMockEnable(true); //单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。 mLocationOption.setHttpTimeOut(20000); //关闭缓存机制 mLocationOption.setLocationCacheEnable(false); //给定位客户端对象设置定位参数 mLocationClient.setLocationOption(mLocationOption); //启动定位 mLocationClient.startLocation(); //可以通过类implement方式实现AMapLocationListener接口,也可以通过创造接口类对象的方法实现 //以下为后者的举例:}
<!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!--用于获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"/> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!--用于写入缓存数据到扩展存储卡--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <!--用于申请获取蓝牙信息进行室内定位--> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<meta-data android:name="com.amap.api.v2.apikey" android:value="b96bb3f63f01ea11da8aff9bbedc893b"/><service android:name="com.amap.api.location.APSService"></service>
// 2d
compile 'com.amap.api:map2d:latest.integration' // 导航 compile 'com.amap.api:navi-3dmap:latest.integration' // 搜索 compile 'com.amap.api:search:latest.integration' // 定位 compile 'com.amap.api:location:latest.integration'// recycle compile 'com.android.support:support-v4:27.0.0' compile 'com.android.support:appcompat-v7:27.0.0' compile 'com.android.support:recyclerview-v7:27.0.0' compile 'com.android.support:design:27.0.0'