android 高德地图定位缓慢,Android高德地图定位逻辑优化
优化思路:
将定位逻辑写在Application中,并提供监听,需要时在其他Activity中调用结果。
解决问题:
1.将定位逻辑写在Activity可能存在定位多次初始化、多次请求定位等定位相关逻辑混乱的问题;
2.定位逻辑初始化时的定位设置耗时较多,写在Activity中会导致Activity启动过慢的问题。
基本配置:
具体实现:
源代码:
package com.example.xxx;
import android.app.Application;
import android.content.Context;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;
import com.amap.api.location.AMapLocationListener;
public class App extends Application {
// 声明AMapLocationClient类对象
public static AMapLocationClient mLocationClient = null;
// 声明AMapLocationClientOption对象
public static AMapLocationClientOption mLocationOption = null;
public static AMapLocation mLoction = null;
public static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
}
/**
*
* @ClassName: MyLocationListener
* @Description: 定位回调
* @author frank.fun@qq.com
* @date 2016年11月10日 下午2:05:45
*
*/
public interface MyLocationListener {
public void onLocationChanged(AMapLocation location);
}
/**
*
* @Title: getLocation
* @Description: 获取当前地址,不重新获取
* @param listener
*/
public static void getLocation(final MyLocationListener listener) {
if (mLoction != null) {
listener.onLocationChanged(mLoction);
return;
}
getCurrentLocation(listener);
}
/**
*
* @Title: getCurrentLocation
* @Description: 重新获取当前地址
* @param listener
*/
public static void getCurrentLocation(final MyLocationListener listener) {
// 初始化定位
mLocationClient = new AMapLocationClient(mContext);
// 设置定位回调监听
mLocationClient.setLocationListener(new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation location) {
if (location != null) {
mLocationClient.stopLocation();
mLoction = location;
listener.onLocationChanged(location);
}
}
});
// 初始化AMapLocationClientOption对象
mLocationOption = new AMapLocationClientOption();
// 设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
// 获取最近3s内精度最高的一次定位结果:
// 设置setOnceLocationLatest(boolean
// b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean
// b)接口也会被设置为true,反之不会,默认为false。
mLocationOption.setOnceLocationLatest(true);
// 给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
// 启动定位
mLocationClient.startLocation();
}
}
在Activity中调用:
App.getLocation(new MyLocationListener() {
@Override
public void onLocationChanged(AMapLocation location) {
location_tv.setText(location.getCity());
}
});
这样,与定位相关的其他需求如经纬度、详细地址等相关逻辑都可以通过此处一个App.getLocation(listener...)中调用获取。
android 高德地图定位缓慢,Android高德地图定位逻辑优化相关推荐
- android 定位工具类,高德地图定位工具类
引言 定位功能初始化设置时耗时较多,如果放在Activity中操作,难免会有Activity切换较慢的问题.通过该工具类,可以实现一次初始化,多处随时调用.具有占用资源少,使用方便,便于复用,速度快, ...
- Android - 集成高德地图API(搜索,地图,定位)
前言: 今天重构公司app的地图功能,刚好做个教程出来方便大家. 第一步: 注册高德开发用户,并来到控制台,点击应用管理->我的应用,然后创建新应用 地址:高德开放平台 | 高德地图API 点击 ...
- 高德地图android api定位失败,android 定位没有问题,iOS定位失败获取不到位置信息...
@override void initState() { super.initState(); _type = widget.type; WidgetsBinding.instance.addPost ...
- js 调用android定位,基于html5+ 高德地图JS API使用安卓定位sdk用来进行定位
使用Native.js打开Android的H5辅助定位 mui.plusReady(function() { if(plus.os.name == 'Android') { var AMapLocat ...
- Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航
主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...
- Android高德地图基本开发/在线高德离线地图开发/断网使用离线地图(Assets文件夹的使用)
文章目录 高德SDK基本使用 前置操作 需求一:显示地图,并以当前所在位置为中心 权限申请 布局功能代码 活动功能代码 效果展示 需求二:离线地图(直接添加到应用端项目内) 需求三 :点击数据后以数据 ...
- Android接入高德地图SDK 一引入高德sdk
SHA1的获取: 然后输入cd .android 回车 在输入:keytool -list -v -keystore debug.keystore 在回车,密钥默认 android 添加 jar 文件 ...
- android 高德卫星地图数据,白马地图 Bmap for Android v7.3.81 强大高德百度地图应用|张小北...
Bmap for Android 是一款集成高德地图百度地图为一体的第三方地图应用APP,Bmap for Android 又叫白马地图,采用高德/百度地图数据引擎,可任意切换百度地图.高德地图数据源 ...
- android高德地图使用教程,Android 之 高德地图学习 一 基本地图
自己做的笔记,没有深层的东西,请大神绕行~ 高德地图和百度地图相差不多,网上很多百度地图的视频教学,在这里锻炼下自己的学习能力,来弄下高德地图. 首先 进入 高德地图 官网,注册开发者 ,申请ke ...
最新文章
- 独家 | 用随机森林预测“美版拼多多”商品销量
- zw版【转发·台湾nvp系列Delphi例程】HALCON SmoothImage
- Windows命令:查看端口占用状况,杀掉进程
- 互联网或将进入泡沫2.0时代
- 每日一皮:听说学琵琶的都很文弱...
- ipconfig /flushdns 解释
- documentbodyscrollTop的值总为零的解决办法
- endnote怎么和word关联_endnote x9怎么和word关联?Word中用EndNote X9教程
- android+apk启动过程,Android Apk的运行过程(一)—— Activity启动与页面事件传递...
- 纺织品外观疵点及其成因分析大全
- android快速开发框架_【程序源代码】springboot和ssm的极速轻量快速开发框架
- excel查标准正态分布_Excel有关正态分布函数NORMSDIST做正态分布图
- R语言入门(1)时间序列分析
- 粉笔网页端资料分析仿ipad分屏插件开发完成总结
- 一款非常nice的国产U盘启动制作工具——Ventoy
- 详细教程!手把手教你制作个人微信红包封面
- c++小游戏:飞机游戏
- Jrebel+springboot2.0 启动失败问题
- 淘宝白底图有什么要求 淘宝白底图权重及注意事项
- Codeforces Round #618 (Div. 2)C、Anu Has a Function
热门文章
- 计算机图形学习课后习题解答--孔令得版
- 安卓开发个人小作品(1) - 有声计算器
- layui获取选中行数据
- 【码云学习02】Git基本命令
- imac 网络安装系统 服务器时间,Mac 重装系统教程(二):网络在线重装
- 触控面板 开发_长信科技研发内核不断升级 成触控显示一体化领军企业
- android:exported、enabled属性
- rtsp流媒体播放器----ffmpeg相关代码走读(一)
- sd/mmc驱动框架-(三)mmc子系统的数据结构
- hanlp自然语言处理包的基本使用--python