高德地图android4,Android高德之旅(4)我的位置
废话
说到吃饭,最近刚开了一家...咳咳,说到位置定位,主要包含两部分,第一个是根据GPS获取经纬度,第二是根据经纬度获取省市区行政区划。先说第一个,使用过地图导航的都知道,定位我的位置通常是一个蓝色的箭头,在地图上移动,我们也来实现这个效果。
1、基础地图
请参照本系列第一篇
2、我的位置
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_location);
mapView = (MapView) findViewById(R.id.map_view);
mapView.onCreate(savedInstanceState); //此方法必须重写
aMap = mapView.getMap();
setupMapView();
setupLocationStyle();
}
private void setupMapView() {
// 设置默认定位按钮是否显示,非必需设置
aMap.getUiSettings().setMyLocationButtonEnabled(true);
// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false
aMap.setMyLocationEnabled(true);
aMap.setOnMyLocationChangeListener(this);
}
private void setupLocationStyle() {
myLocationStyle = new MyLocationStyle();
// 默认模式,连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动,1秒1次定位
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
// 设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒
myLocationStyle.interval(500);
// 设置定位蓝点的Style
aMap.setMyLocationStyle(myLocationStyle);
}
显示效果如下:
3、蓝点展示模式
定位蓝点提供8种模式:
// 只定位一次
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW);
// 定位一次,且将视角移动到地图中心点
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) ;
// 连续定位、且将视角移动到地图中心点,定位蓝点跟随设备移动,1秒1次定位
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW) ;
// 连续定位、且将视角移动到地图中心点,地图依照设备方向旋转,定位点会跟随设备移动,1秒1次定位
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE);
// 连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动,1秒1次定位
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
以下三种模式从5.1.0版本开始提供
// 连续定位、蓝点不会移动到地图中心点,定位点依照设备方向旋转,并且蓝点会跟随设备移动
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);
// 连续定位、蓝点不会移动到地图中心点,并且蓝点会跟随设备移动
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER);
// 连续定位、蓝点不会移动到地图中心点,地图依照设备方向旋转,并且蓝点会跟随设备移动
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER);
4、是否显示定位蓝点
// 方法自5.1.0版本后支持,设置false以后图面上不再有定位蓝点的概念,但是会持续回调位置信息
public void showLocatePoint(View view) {
myLocationStyle.showMyLocation(true);
}
5、自定义定位蓝点图标
public void customLocationIcon(View view) {
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.custom_location_icon);
myLocationStyle.myLocationIcon(bitmapDescriptor);
aMap.setMyLocationStyle(myLocationStyle);
}
6、设置蓝点图标的锚点
锚点是指定位蓝点图标像素与定位蓝点坐标的关联点,例如需要将图标的左下方像素点与定位蓝点的经纬度关联在一起,通过如下方法传入(0.0,1.0)。图标左上点为像素原点。
public void iconAnchor(View view) {
myLocationStyle.anchor(0.0f, 1.0f);
aMap.setMyLocationStyle(myLocationStyle);
}
7、精度圆圈的自定义
public void circleDisplay(View view) {
// 圆圈的边框颜色
myLocationStyle.strokeColor(Color.RED);
// 圆圈的填充颜色
myLocationStyle.radiusFillColor(Color.LTGRAY);
// 圆圈的边框宽度
myLocationStyle.strokeWidth(2);
aMap.setMyLocationStyle(myLocationStyle);
}
8、设置定位频次
myLocationStyle.interval(1000);
aMap.setMyLocationStyle(myLocationStyle);
最少设置1000毫秒,如果小于1000毫秒则当作1000毫秒。该方法只会作用在会执行连续定位的工作模式上。
连续定位的工作模式有一下几种:
MyLocationStyle.LOCATION_TYPE_FOLLOW ;
MyLocationStyle.LOCATION_TYPE_MAP_ROTATE;
MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE;
9、获取经纬度信息
说了半天,我们只是看到了地图上的显示,还不知道具体的经纬度地点,通过一个简单的回调就可以获得
aMap.setOnMyLocationChangeListener(this);
@Override
public void onMyLocationChange(Location location) {
Log.e("TAG", "MyLocation=[" + location.getLongitude() + ", " + location.getLatitude() + "]");
}
10、接下来就是根据经纬度获取省市区
GeocodeSearch geoSearch = new GeocodeSearch(context);
geoSearch.setOnGeocodeSearchListener(GeocodeSearch.OnGeocodeSearchListener);
@Override
public void onRegeocodeSearched(RegeocodeResult result, int code) {
Log.e("TAG", "code=" + code);
RegeocodeAddress address = result.getRegeocodeAddress();
if (address == null) {
Log.e("TAG", "结果为空");
} else {
Log.e("TAG", "地址:" + address.getProvince() + address.getCity() + address.getDistrict());
}
}
public void queryProvinceCity(View view) {
// 第一个参数表示经纬度,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
LatLonPoint point = new LatLonPoint(longitude, latitude);
RegeocodeQuery query = new RegeocodeQuery(point, 200,GeocodeSearch.AMAP);
geoSearch.getFromLocationAsyn(query);
}
11、很自然我们会想到反向的过程
// 第一个参数是城市名,第二个参数是城市代码
GeocodeQuery query = new GeocodeQuery("北京市", "010");
geoSearch.getFromLocationNameAsyn(query);
@Override
public void onGeocodeSearched(GeocodeResult result, int code) {
Log.e("TAG", "code=" + code);
}
总结
好啦,本期节目就到这里,感谢大家的收看,我们下期再见~
高德地图android4,Android高德之旅(4)我的位置相关推荐
- android 高德地图动画,Android 高德地图上自定义动画
高德提供了SmoothMoveMarkerAPI的调用,用于平滑移动,只需要给point点就好了 还有animation的封装,对 RotateAnimation,AlphaAnimation,Sca ...
- Android接入高德地图SDK,Android高德SDK 地图篇一:集成高德SDK
Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一. 地图篇:利用高德SDK实现滴滴出行的效 二. 导航篇:利用高德SDK实现滴滴司机端的效 ...
- java实现高德地图app,Android 高德地图入门demo,最新高德地图实现方法,附源码及apk...
[实例简介] Android 高德地图入门demo,最新高德地图实现方法,附源码及apk [实例截图] [核心代码] GaoDeDemo ├── GaoDeDemo │ ├── app │ │ ...
- android+高德地图教程,Android高德地图开发(三)地图简单操作
一.概述 上一节中我们了解到地图的定位,图层切换,离线地图等基础操作,接下来学习地图的基本操作. 二.本章内容 --- 地图交互设置 --- 地图绘制 1.地图交互设置 在使用地图的时候,不可避免的会 ...
- android高德地图demo,Android :高德地图demo
高德的账号去改的开房平台进行注册,注册成功后进入个人中心; 进入个人中心后点击应供管理 //这里可以随便写 获取SHA1码 需要的权限有 清单文件中 sourceSets { main { jniLi ...
- 高德地图聚合android,GitHub - lingyanluoxue/android-togetherMap: 实现高德地图的marker聚合功能...
android-togetherMap 本文我将讲解一下我最近实现的高德地图Marker的聚合功能.在项目开发中需要使用到地图Marker的聚合功能,但是高德地图并没有实现对Marker的聚合功能,所 ...
- 高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)
Screenshot_20170509-152819.png 前言 最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sd ...
- js 跳转到指定位置 高德地图_JS引入高德地图定位
在此记录一下X项目使用高德地图的思路高德地图(X项目前端框架是Jquery) 2准备工作(封装方法,以便直接调用) -2.2封装超时方法($.timeOut-参考) -2.3封装异步调用地图的方法 / ...
- android 高德地图 lbstraceclient,安卓高德地图定位篇-(1)
安卓高德地图定位.先看效果图: STEP1: 先去高德开放平台注册账号,这个不用多说吧 网址:https://lbs.amap.com/ 之后再去控制台-应用管理找到自己的key,如下图所示 STEP ...
最新文章
- Docker系列 六. Docker 安装 Redis
- POJ 2870 求矩阵的加法
- 中国移动研究院2020春招技术综合JAVA在线编程题第二题
- 0xbc指令 st75256_CIRCUIT-BREAKER GEB3160FFM
- 【转】eclipse 自动关闭总结
- struts2令牌(token)内部原理
- 淘宝技术架构演进之路
- 现在这个时代变了,区块链,数字货币才是最火的项目
- 部署Symantec Antivirus 10.0网络防毒服务器之三
- 1056 组合数的和 (15 分)—PAT (Basic Level) Practice (中文)
- Matlab:厄米-高斯光束合成拉盖尔-高斯光束
- 高等数学在计算机领域的应用,计算机专业高等数学应用性改革探索论文
- 惠普HP LaserJet Pro P1106 打印机驱动
- 九宫格按键输入(机考Python)
- 计算机程序员简历基本技能,应聘程序员的十大必备技能
- 2022企业人效管理白皮书
- 今日头条的排名算法_今日头条三大智能算法揭秘 让你快速明头条的推荐原理...
- 计算机应用基础上机指导 教材,普通高等院校计算机优质平台课系列教材:计算机应用基础上机指导...
- 远程文件同步工具--rsync
- mysql社工_社工数据搜索引擎搭建
热门文章
- 为什么Domain controller上的time synchronization非常重要?
- hbase中对deadserver处理存在的问题
- HDFS配置Kerberos
- golang错误处理机制(异常处理)
- 图解Hadoop hdfs写数据流程
- mybatis中使用sql @变量
- MySQL 避免行锁升级为表锁——使用高效的索引
- 【软考-软件设计师】程序设计语言基础知识框架
- IDEA springboot项目中properties配置文件 {针对将对应GBK改为UTF-8并勾选转为ASCII后仍无效情况} 运行时中文乱码解决
- linux如何删除符号链接文件夹,在Linux中怎样移除(删除)符号链接