引言

定位功能初始化设置时耗时较多,如果放在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 定位工具类,高德地图定位工具类相关推荐

  1. flutter 获取定位_10分钟让你的flutter程序拥有定位功能--集成高德地图定位指南...

    地图定位这个功能目前基本上是商业应用app的标配.然而,在flutter中进行原生功能的开发,意味着必须的ios和android双端都通,而且需要大量的调试时间.尤其目前这个时间点,flutter的版 ...

  2. unity3d,android平台下,高德地图定位

    这里,用了一个比较偷懒的办法,直接用高德提供的android定位sdk,没有重新编译.好处是省事,坏处是,没法修改默认的定位模式.部分信息获取不到. 如果需要完整的功能,还是需要重新编译高德地图的sd ...

  3. 高德h5定位误差_高德地图定位JS API不准确问题

    到网上找了个解决高德偏移量的代码 https://blog.csdn.net/woshimu... 我的是ip定位 转换过的定位就准确了 this.map.plugin('AMap.Geolocati ...

  4. Android 使用高德地图定位(Google play)国外定位

    申请key这些我就不说了,不懂的同学可以去高德地图开放平台查看详细介绍 1.下载依赖 https://lbs.amap.com/api/android-location-sdk/download 因为 ...

  5. Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog

    Android MVVM框架搭建(八)高德地图定位.天气查询.BottomSheetDialog 前言 正文 一.集成SDK 二.基础配置 ① 权限配置 ② 配置Key 三.显示地图 ① MapFra ...

  6. android定位附近店铺,高德地图怎么添加店铺位置_高德地图定位怎么设置添加自己家店铺位置_攻略...

    高德地图是国内最知名的地图导航软件,基本上每个人的手机上都有这款软件.如今想要方便出行都可以通过高得地图查询位置就可以了,给我们的生活带来了很多的便利.在高德地图上也可以很方便的查询各个地方的店铺,通 ...

  7. android 高德地图 lbstraceclient,安卓高德地图定位篇-(1)

    安卓高德地图定位.先看效果图: STEP1: 先去高德开放平台注册账号,这个不用多说吧 网址:https://lbs.amap.com/ 之后再去控制台-应用管理找到自己的key,如下图所示 STEP ...

  8. android中高德地图定位功能并且获取定位的城市

    一.概述 今天再一次用到了地图定位功能和地图显示功能,以前一直用的是高德地图定位,这次还是用高德,记录一下以便以后再做时方便一些.因为业务需要的功能不是很全,可以参考https://www.2cto. ...

  9. Android实现高德地图定位详细流程

     要实现高德地图定位呢,首先需要做好以下几步准备:  如果你嫌笔者写的不好或者懒得看,只需要代码的话,请选择: github:点击打开链接,此连接可能和文章内容有所出入,因为我可能会做后期的开发使用. ...

最新文章

  1. java中定义类的关键字为_在Java中,定义类的关键字是__________________.
  2. eplan图纸怎么发给别人_EPLAN标签导出材料清单(附模板+图文教程)
  3. Caffe+Kubuntu16.04_X64+CUDA 8.0配置
  4. 飞鸽传书:谈谈RenderControl手动调用
  5. 360公司2019秋季校园招聘内部推荐启动啦!!!
  6. R语言-merge和rbind
  7. IIS------项目配置到IIS后报500错误
  8. sqlserver2000换成mysql_MS SQL Server2000转换成MySQL
  9. 一个Http请求的流程
  10. 极大似然估计方法(Maximum Likelihood Estimate Method)
  11. 串口通信工具android,串口调试工具手机版
  12. vue keep-alive案例全教程
  13. 【常见错误】Quartz常见错误
  14. c语言中eof的作用,eof在c语言中表示什么
  15. 在局域网内怎样使两台计算机共享,怎么使两台电脑共享数据?
  16. Win32gui 无效窗口句柄
  17. CentOS 官网下载及版本说明
  18. 共线性诊断 matlab,求共线性诊断结果的含义
  19. aptio设置全中文_中文bios设置方法图解教程(超简单)
  20. JS 刷新当前页面 返回上一页并刷新的方法

热门文章

  1. POJ1753 Flip Game
  2. 虚拟机配置DNS服务器
  3. 广告推广是什么意思?利用文章推广的方法做广告推广技巧总结
  4. 免费赠送20个帆布包和2个咖啡杯活动规则必看(会搜索+复制粘贴就行)
  5. 打印机服务器ip修改,怎样改打印机服务器的ip地址
  6. 使用fs传真模块mod_fax的一点点经验
  7. 一个工科土博士生---最近的状态和想法
  8. 线程开的越多就越好吗|趣谈线程池
  9. python搭建博客系统_Mezzanine 搭建 BLOG 系统
  10. 看清有关 SDN 的七大认识偏差