Android高德地图的定位
来源:互联网 发布:战狼2 知乎 豆瓣 编辑:程序博客网 时间:2024/05/16 10:50
看注释解析基本上OK了。
布局,权限:
<!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<meta-data android:name="com.amap.api.v2.apikey" android:value="你的key"/><service android:name="com.amap.api.location.APSService"></service>
<com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/my_location"> </com.amap.api.maps.MapView>
public class MainActivity extends AppCompatActivity implements LocationSource,AMapLocationListener { private AMap aMap; private OnLocationChangedListener mListener; private MapView mMapView; //声明AMapLocationClient类对象 public AMapLocationClient mapLocationClient; //声明AMapLocationClientOption对象 public AMapLocationClientOption mapLocationClientOption; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); 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(); } aMap.setLocationSource(this);// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false aMap.setMyLocationEnabled(true); // 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转几种 aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); mapLocationClient.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 onStop() { super.onStop(); mapLocationClient.stopLocation(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理 mMapView.onSaveInstanceState(outState); } @Override public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation!=null){ if (aMapLocation.getErrorCode()==0){ mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点 StringBuilder stringBuilder = new StringBuilder(); //定位成功回调信息,设置相关消息 int type = aMapLocation.getLocationType(); String address = aMapLocation.getAddress(); stringBuilder.append(type+address); Toast.makeText(this,stringBuilder.toString(),Toast.LENGTH_SHORT).show(); }else { //显示错误信息ErrCode是错误码,errInfo是错误信息,详见下方错误码表。 Log.i("erro info:",aMapLocation.getErrorCode()+"---"+aMapLocation.getErrorInfo()); } } } //激活定位 @Override public void activate(OnLocationChangedListener onLocationChangedListener) { mListener = onLocationChangedListener; if (mapLocationClient==null){ //初始化AMapLocationClient,并绑定监听 mapLocationClient = new AMapLocationClient(getApplicationContext()); //初始化定位参数 mapLocationClientOption = new AMapLocationClientOption(); //设置定位精度 mapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //是否返回地址信息 mapLocationClientOption.setNeedAddress(true); //是否只定位一次 mapLocationClientOption.setOnceLocation(false); //设置是否强制刷新WIFI,默认为强制刷新 mapLocationClientOption.setWifiActiveScan(true); //是否允许模拟位置 mapLocationClientOption.setMockEnable(false); //定位时间间隔 mapLocationClientOption.setInterval(2000); //给定位客户端对象设置定位参数 mapLocationClient.setLocationOption(mapLocationClientOption); //绑定监听 mapLocationClient.setLocationListener(this); //开启定位 mapLocationClient.startLocation(); } } //停止定位 @Override public void deactivate() { mListener = null; if (mapLocationClient!=null){ mapLocationClient.stopLocation(); mapLocationClient.onDestroy(); } mapLocationClient = null; } /** 0 定位成功。 1 一些重要参数为空,如context;请对定位传递的参数进行非空判断。 2 定位失败,由于仅扫描到单个wifi,且没有基站信息。 3 获取到的请求参数为空,可能获取过程中出现异常。 4 请求服务器过程中的异常,多为网络情况差,链路不通导致,请检查设备网络是否通畅。 5 返回的XML格式错误,解析失败。 6 定位服务返回定位失败,如果出现该异常,请将errorDetail信息通过API@autonavi.com反馈给我们。 7 KEY建权失败,请仔细检查key绑定的sha1值与apk签名sha1值是否对应。 8 Android exception通用错误,请将errordetail信息通过API@autonavi.com反馈给我们。 9 定位初始化时出现异常,请重新启动定位。 10 定位客户端启动失败,请检查AndroidManifest.xml文件是否配置了APSService定位服务 11 定位时的基站信息错误,请检查是否安装SIM卡,设备很有可能连入了伪基站网络。 12 缺少定位权限,请在设备的设置中开启app的定位权限。 **/}
1 0
- Android高德地图的定位
- Android 高德地图定位
- android高德地图定位
- 高德地图的定位
- 高德地图 Android API 的定位原理及使用方法
- Android 高德地图的定位,周边搜索
- Android 高德地图定位功能的实现步骤
- android高德地图定位功能的实现
- android高德地图调用定位显示
- Android开发笔记----高德地图定位
- android 高德地图定位(地理位置) 笔记
- Android之高德地图定位
- Android--高德地图自动定位
- android开发二--------高德地图定位
- Android之高德地图定位
- android高德地图定位集成
- Android 高德地图SDK(定位)
- Android高德地图实现后台定位
- Hibernate中Caused by: java.sql.SQLException: Field 'address_id'doesn't have a default value
- 仿微博分享评论表情
- js弹出框、对话框、提示框、弹窗总结
- scrollimg.js
- 游戏开发
- Android高德地图的定位
- 关于 checkBox的 checked的判断的问题
- Android Studio --- Gradle Build Running 死机问题
- C# 异常处理机制
- java多线程
- 【c语言】最小值与第一个值互换位置,最大值与最后一个互换位置
- strace 跟踪进程中的系统调用
- 226Invert Binary Tree
- 高德地图 鼠标点击后 地图地图上点标记跟着变化