废话

说到吃饭,最近刚开了一家...咳咳,说到位置定位,主要包含两部分,第一个是根据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)我的位置相关推荐

  1. android 高德地图动画,Android 高德地图上自定义动画

    高德提供了SmoothMoveMarkerAPI的调用,用于平滑移动,只需要给point点就好了 还有animation的封装,对 RotateAnimation,AlphaAnimation,Sca ...

  2. Android接入高德地图SDK,Android高德SDK 地图篇一:集成高德SDK

    Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一. 地图篇:利用高德SDK实现滴滴出行的效 二. 导航篇:利用高德SDK实现滴滴司机端的效 ...

  3. java实现高德地图app,Android 高德地图入门demo,最新高德地图实现方法,附源码及apk...

    [实例简介] Android 高德地图入门demo,最新高德地图实现方法,附源码及apk [实例截图] [核心代码] GaoDeDemo ├── GaoDeDemo │   ├── app │   │ ...

  4. android+高德地图教程,Android高德地图开发(三)地图简单操作

    一.概述 上一节中我们了解到地图的定位,图层切换,离线地图等基础操作,接下来学习地图的基本操作. 二.本章内容 --- 地图交互设置 --- 地图绘制 1.地图交互设置 在使用地图的时候,不可避免的会 ...

  5. android高德地图demo,Android :高德地图demo

    高德的账号去改的开房平台进行注册,注册成功后进入个人中心; 进入个人中心后点击应供管理 //这里可以随便写 获取SHA1码 需要的权限有 清单文件中 sourceSets { main { jniLi ...

  6. 高德地图聚合android,GitHub - lingyanluoxue/android-togetherMap: 实现高德地图的marker聚合功能...

    android-togetherMap 本文我将讲解一下我最近实现的高德地图Marker的聚合功能.在项目开发中需要使用到地图Marker的聚合功能,但是高德地图并没有实现对Marker的聚合功能,所 ...

  7. 高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)

    Screenshot_20170509-152819.png 前言 最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sd ...

  8. js 跳转到指定位置 高德地图_JS引入高德地图定位

    在此记录一下X项目使用高德地图的思路高德地图(X项目前端框架是Jquery) 2准备工作(封装方法,以便直接调用) -2.2封装超时方法($.timeOut-参考) -2.3封装异步调用地图的方法 / ...

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

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

最新文章

  1. Docker系列 六. Docker 安装 Redis
  2. POJ 2870 求矩阵的加法
  3. 中国移动研究院2020春招技术综合JAVA在线编程题第二题
  4. 0xbc指令 st75256_CIRCUIT-BREAKER GEB3160FFM
  5. 【转】eclipse 自动关闭总结
  6. struts2令牌(token)内部原理
  7. 淘宝技术架构演进之路
  8. 现在这个时代变了,区块链,数字货币才是最火的项目
  9. 部署Symantec Antivirus 10.0网络防毒服务器之三
  10. 1056 组合数的和 (15 分)—PAT (Basic Level) Practice (中文)
  11. Matlab:厄米-高斯光束合成拉盖尔-高斯光束
  12. 高等数学在计算机领域的应用,计算机专业高等数学应用性改革探索论文
  13. 惠普HP LaserJet Pro P1106 打印机驱动
  14. 九宫格按键输入(机考Python)
  15. 计算机程序员简历基本技能,应聘程序员的十大必备技能
  16. 2022企业人效管理白皮书
  17. 今日头条的排名算法_今日头条三大智能算法揭秘 让你快速明头条的推荐原理...
  18. 计算机应用基础上机指导 教材,普通高等院校计算机优质平台课系列教材:计算机应用基础上机指导...
  19. 远程文件同步工具--rsync
  20. mysql社工_社工数据搜索引擎搭建

热门文章

  1. 为什么Domain controller上的time synchronization非常重要?
  2. hbase中对deadserver处理存在的问题
  3. HDFS配置Kerberos
  4. golang错误处理机制(异常处理)
  5. 图解Hadoop hdfs写数据流程
  6. mybatis中使用sql @变量
  7. MySQL 避免行锁升级为表锁——使用高效的索引
  8. 【软考-软件设计师】程序设计语言基础知识框架
  9. IDEA springboot项目中properties配置文件 {针对将对应GBK改为UTF-8并勾选转为ASCII后仍无效情况} 运行时中文乱码解决
  10. linux如何删除符号链接文件夹,在Linux中怎样移除(删除)符号链接