Android高德地图的定位
看注释解析基本上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.MapViewandroid: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;@Overrideprotected 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表示隐藏定位层并不可触发定位,默认是falseaMap.setMyLocationEnabled(true);// 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转几种aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();mapLocationClient.onDestroy();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理mMapView.onPause();}@Overrideprotected void onStop() {super.onStop();mapLocationClient.stopLocation();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理mMapView.onSaveInstanceState(outState);}@Overridepublic 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());}}}//激活定位@Overridepublic 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();}}//停止定位@Overridepublic 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的定位权限。**/
}
Android高德地图的定位相关推荐
- android高德地图默认当前位置,【报Bug】1.9.2 android 高德地图无法定位到当前位置...
详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] 1.9.2版本 a ...
- Android 高德地图(带有定位和点击显示经度纬度)
Android高德地图测试,如下: 1.Android高德地图Demo地址下载: 下载android高德地图Demo 1.2 Android定位SDK 一键下载 1.3 下载好的文件zip ...
- Android 高德地图的定位,周边搜索
刚弄完这两个功能,当然是结合官网例子实现的.效果还行,稍作优化便可整合到app使用.在这里做一下总结,及说明下我的思路. 刚开始上手感觉比较乱学起来也比较累,方法,类太多,直接复制各种错,还不知道为什 ...
- android呼吸灯动画,Android高德地图自定义定位蓝点实现呼吸灯功能
还是先上个图吧: cluster.gif 说下实现的原理,首先这个定位小蓝点是由两张图片组成的,最底层的一张白色圆形图片以及上一层的蓝色圆形图片,只要不停的对蓝色图片进行透明度动画操作就可以实现这个效 ...
- Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS
/*** 判断定位服务是否开启** @param* @return true 表示开启*/ public static boolean isLocationEnabled(Context contex ...
- Android Studio之高德地图实现定位和3D地图显示
在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码 ...
- android 高德地图定位获取经纬度
android 高德地图定位获取经纬度 之前开发定位都是集成百度的,领导说要用高德的,没办法干吧,官方的文档太详细了看着真累. 我们得先去官网注册开发者账号,创建应用,填写自己项目的包名和SHA1, ...
- Android高德地图自定义Markers的例子
下文为各位重点介绍关于Android高德地图自定义Markers的例子,希望这篇文章能够让各位理解到Android高德地图自定义Markers的方法. 之前的博客里说了地图的嵌入和定位,今天就说说在地 ...
- android------之高德地图实现定位和3D地图显示
2019独角兽企业重金招聘Python工程师标准>>> 在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德 ...
最新文章
- 如何用burp抓取手机的流量_用企业微信SCRM如何搭建流量新体系
- 万字深度好文!视觉-语言(VL)智能:任务、表征学习和大型模型
- php取汉字第一个字,php---------取汉字的第一个字的首字母
- ionic@2.0 beta版本安装指南
- 关于m_pMainWnd = dlg的错误
- [Hadoop] Install Hadoop 2.2 on Win7 64bit
- 五种I/O 模式——阻塞(默认IO模式),非阻塞(常用语管道),I/O多路复用(IO多路复用的应用场景),信号I/O,异步I/O
- nginx指定配置文件启动_NGINX安全加固手册
- Hibernate学习笔记③
- js中立即执行函数会预编译吗_作为前端你了解JavaScript运行机制吗?
- ubuntu ssh 登录日志_全球第一开源ERP Odoo操作手册 安装ssh服务和ssh客户端
- Selenium2+python自动化8-SeleniumBuilder辅助定位元素
- hdu 4609 3-idiots(FFT计数)
- java循环判断要点_Java 循环条件判断好题锦集
- mavonEditor编辑器的使用
- python第三方库pip安装失败,无法使用pip命令安装python第三方库的原因及解决方法...
- 如何做到在各大搜索引擎搜索自己的网页
- php图片无损压缩的问题解决(推荐)
- Oracle不完全恢复
- NAXX Demo4_GZQ_01