android 定位工具类,高德地图定位工具类
引言
定位功能初始化设置时耗时较多,如果放在Activity中操作,难免会有Activity切换较慢的问题。通过该工具类,可以实现一次初始化,多处随时调用。具有占用资源少,使用方便,便于复用,速度快,可根据不同需求获取不同结果的优点。
正文
1) 定位jar包;
2) Manifest配置。
2.定位工具类代码:
package com.frank.map;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;
import android.content.Context;
/**
*
* @ClassName: GDLocationUtil
* @Description: 高德地图定位工具类
* @author frank.fun@qq.com
* @date 2017年1月8日 下午1:51:47
*
*/
public class GDLocationUtil {
private static AMapLocationClient mlocationClient;
public static AMapLocationClientOption mLocationOption = null;
public static AMapLocation sLocation = null;
/**
*
* @Title: init
* @Description: 初始化地图导航,在Application onCreate中调用,只需调用一次
* @param context
*/
public static void init(Context context) {
// 声明mLocationOption对象
mlocationClient = new AMapLocationClient(context);
// 初始化定位参数
mLocationOption = new AMapLocationClientOption();
// 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
// 设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
// 设置定位参数
mlocationClient.setLocationOption(mLocationOption);
// 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
// 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
// 在定位结束后,在合适的生命周期调用onDestroy()方法
// 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
}
/**
*
* @ClassName: MyLocationListener
* @Description: 定位结果回调
* @author frank.fun@qq.com
* @date 2017年1月8日 下午1:53:11
*
*/
public interface MyLocationListener {
public void result(AMapLocation location);
}
/**
*
* @Title: getLocation
* @Description: 获取位置,如果之前获取过定位结果,则不会重复获取
* @param listener
*/
public static void getLocation(MyLocationListener listener) {
if (sLocation == null) {
getCurrentLocation(listener);
} else {
listener.result(sLocation);
}
}
/**
*
* @Title: getCurrentLocation
* @Description: 获取位置,重新发起获取位置请求
* @param listener
*/
public static void getCurrentLocation(final MyLocationListener listener) {
if (mlocationClient==null) {
return;
}
// 设置定位监听
mlocationClient.setLocationListener(new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation location) {
if (location != null) {
//定位成功,取消定位
mlocationClient.stopLocation();
sLocation=location;
listener.result(location);
}else {
//获取定位数据失败
}
}
});
// 启动定位
mlocationClient.startLocation();
}
/**
*
* @Title: destroy
* @Description: 销毁定位,必须在退出程序时调用,否则定位会发生异常
*/
public static void destroy() {
mlocationClient.onDestroy();
}
}
3.使用方法:
1) 在Application类的onCreate方法中进行初始化:
// 定位工具初始化
GDLocationUtil.init(this);
2) 在需要时调用:
// 获取之前定位位置,如果之前未曾定位,则重新定位
GDLocationUtil.getLocation(new MyLocationListener() {
@Override
public void result(AMapLocation location) {
//针对location进行相关操作,如location.getCity(),无需验证location是否为null;
}
});
// 获取当前位置,无论是否定位过,重新进行定位
GDLocationUtil.getCurrentLocation(new MyLocationListener() {
@Override
public void result(AMapLocation location) {
//针对location进行相关操作,如location.getCity(),无需验证location是否为null;
}
});
结束语
通常来说单独的定位功能是用于确定用户所在城市、位置,仅作显示并通过上传位置信息对用户提供相应周边服务用,因此无需重复定位。重复定位耗电量较多且大多无实际作用,因此此处只做单次定位的处理。
android 定位工具类,高德地图定位工具类相关推荐
- flutter 获取定位_10分钟让你的flutter程序拥有定位功能--集成高德地图定位指南...
地图定位这个功能目前基本上是商业应用app的标配.然而,在flutter中进行原生功能的开发,意味着必须的ios和android双端都通,而且需要大量的调试时间.尤其目前这个时间点,flutter的版 ...
- unity3d,android平台下,高德地图定位
这里,用了一个比较偷懒的办法,直接用高德提供的android定位sdk,没有重新编译.好处是省事,坏处是,没法修改默认的定位模式.部分信息获取不到. 如果需要完整的功能,还是需要重新编译高德地图的sd ...
- 高德h5定位误差_高德地图定位JS API不准确问题
到网上找了个解决高德偏移量的代码 https://blog.csdn.net/woshimu... 我的是ip定位 转换过的定位就准确了 this.map.plugin('AMap.Geolocati ...
- Android 使用高德地图定位(Google play)国外定位
申请key这些我就不说了,不懂的同学可以去高德地图开放平台查看详细介绍 1.下载依赖 https://lbs.amap.com/api/android-location-sdk/download 因为 ...
- Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog
Android MVVM框架搭建(八)高德地图定位.天气查询.BottomSheetDialog 前言 正文 一.集成SDK 二.基础配置 ① 权限配置 ② 配置Key 三.显示地图 ① MapFra ...
- android定位附近店铺,高德地图怎么添加店铺位置_高德地图定位怎么设置添加自己家店铺位置_攻略...
高德地图是国内最知名的地图导航软件,基本上每个人的手机上都有这款软件.如今想要方便出行都可以通过高得地图查询位置就可以了,给我们的生活带来了很多的便利.在高德地图上也可以很方便的查询各个地方的店铺,通 ...
- android 高德地图 lbstraceclient,安卓高德地图定位篇-(1)
安卓高德地图定位.先看效果图: STEP1: 先去高德开放平台注册账号,这个不用多说吧 网址:https://lbs.amap.com/ 之后再去控制台-应用管理找到自己的key,如下图所示 STEP ...
- android中高德地图定位功能并且获取定位的城市
一.概述 今天再一次用到了地图定位功能和地图显示功能,以前一直用的是高德地图定位,这次还是用高德,记录一下以便以后再做时方便一些.因为业务需要的功能不是很全,可以参考https://www.2cto. ...
- Android实现高德地图定位详细流程
要实现高德地图定位呢,首先需要做好以下几步准备: 如果你嫌笔者写的不好或者懒得看,只需要代码的话,请选择: github:点击打开链接,此连接可能和文章内容有所出入,因为我可能会做后期的开发使用. ...
最新文章
- java中定义类的关键字为_在Java中,定义类的关键字是__________________.
- eplan图纸怎么发给别人_EPLAN标签导出材料清单(附模板+图文教程)
- Caffe+Kubuntu16.04_X64+CUDA 8.0配置
- 飞鸽传书:谈谈RenderControl手动调用
- 360公司2019秋季校园招聘内部推荐启动啦!!!
- R语言-merge和rbind
- IIS------项目配置到IIS后报500错误
- sqlserver2000换成mysql_MS SQL Server2000转换成MySQL
- 一个Http请求的流程
- 极大似然估计方法(Maximum Likelihood Estimate Method)
- 串口通信工具android,串口调试工具手机版
- vue keep-alive案例全教程
- 【常见错误】Quartz常见错误
- c语言中eof的作用,eof在c语言中表示什么
- 在局域网内怎样使两台计算机共享,怎么使两台电脑共享数据?
- Win32gui 无效窗口句柄
- CentOS 官网下载及版本说明
- 共线性诊断 matlab,求共线性诊断结果的含义
- aptio设置全中文_中文bios设置方法图解教程(超简单)
- JS 刷新当前页面 返回上一页并刷新的方法