这一节主要实现的功能是地图定位的几种模式,包括展示、定位、追随、旋转、旋转位置、跟随不移动中心点、旋转不移动中心点、旋转位置不移动到中心点,我们根据实际需要来选择用那种模式。下面还是主要从代码中来体现,主要部分有注释。

还是先新建布局文件:activity_locationmodesource.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" ></com.amap.api.maps.MapView><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><Buttonandroid:id="@+id/btn_show"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="展示"/><Buttonandroid:id="@+id/btn_locate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="定位"/><Buttonandroid:id="@+id/btn_follow"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="追随"/><Buttonandroid:id="@+id/btn_rotate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="旋转"/><Buttonandroid:id="@+id/btn_rotate_location"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="旋转位置"/><Buttonandroid:id="@+id/btn_follow_nocenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="跟随不移动中心点"/><Buttonandroid:id="@+id/btn_rotate_nocenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="旋转不移动到中心点"/><Buttonandroid:id="@+id/btn_rotate_location_nocenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="旋转位置不移动到中心点"/></LinearLayout></RelativeLayout>

然后创建类文件LocationModeSource.java

package com.junto.gdmaptest.activity;import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.widget.Button;import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.MyLocationStyle;
import com.junto.gdmaptest.R;/*** Created by WangJinyong on 2018/10/24.* 定位的几种模式*/public class LocationModeSourceActivity extends Activity implements View.OnClickListener,AMap.OnMyLocationChangeListener {MapView mapView;AMap aMap;Button btn_show,btn_locate,btn_follow,btn_rotate,btn_rotate_location,btn_follow_nocenter,btn_rotate_nocenter,btn_rotate_location_nocenter;private MyLocationStyle myLocationStyle;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activiy_locationmodesource);mapView = findViewById(R.id.map);mapView.onCreate(savedInstanceState);initView();}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}private void initView(){if (aMap == null) {aMap = mapView.getMap();setUpMap();}btn_show = findViewById(R.id.btn_show);btn_show.setOnClickListener(this);btn_locate = findViewById(R.id.btn_locate);btn_locate.setOnClickListener(this);btn_follow = findViewById(R.id.btn_follow);btn_follow.setOnClickListener(this);btn_rotate = findViewById(R.id.btn_rotate);btn_rotate.setOnClickListener(this);btn_rotate_location = findViewById(R.id.btn_rotate_location);btn_rotate_location.setOnClickListener(this);btn_follow_nocenter = findViewById(R.id.btn_follow_nocenter);btn_follow_nocenter.setOnClickListener(this);btn_rotate_nocenter = findViewById(R.id.btn_rotate_nocenter);btn_rotate_nocenter.setOnClickListener(this);btn_rotate_location_nocenter = findViewById(R.id.btn_rotate_location_nocenter);btn_rotate_location_nocenter.setOnClickListener(this);//设置SDK 自带定位消息监听aMap.setOnMyLocationChangeListener(this);}/*** 设置一些amap的属性*/private void setUpMap() {// 如果要设置定位的默认状态,可以在此处进行设置myLocationStyle = new MyLocationStyle();aMap.setMyLocationStyle(myLocationStyle);aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.btn_show://展示// 只定位,不进行其他操作aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW));break;case R.id.btn_locate://定位aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE));break;case R.id.btn_follow://追随aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW));break;case R.id.btn_rotate://旋转aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE));break;case R.id.btn_rotate_location://旋转位置aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE));break;case R.id.btn_follow_nocenter://跟随比移动中心点aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER));break;case R.id.btn_rotate_nocenter://旋转不移动到中心点aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER));break;case R.id.btn_rotate_location_nocenter://旋转位置不移动到中心点aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER));break;}}@Overridepublic void onMyLocationChange(Location location) {// 定位回调监听if (location != null){Log.e("amap", "onMyLocationChange 定位成功, lat: " + location.getLatitude() + " lon: " + location.getLongitude());Bundle bundle = location.getExtras();if (bundle != null){int errorCode = bundle.getInt(MyLocationStyle.ERROR_CODE);String errorInfo = bundle.getString(MyLocationStyle.ERROR_INFO);// 定位类型,可能为GPS WIFI等,具体可以参考官网的定位SDK介绍int locationType = bundle.getInt(MyLocationStyle.LOCATION_TYPE);Log.e("amap", "定位信息, code: " + errorCode + " errorInfo: " + errorInfo + " locationType: " + locationType );}else {Log.e("amap", "定位信息, bundle is null ");}}else {Log.e("amap", "定位失败");}}
}

上面就是实现地图定位几种模式的全部内容,根据需要来选择使用吧。

(四)高德地图之定位的几种模式相关推荐

  1. Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS

    /*** 判断定位服务是否开启** @param* @return true 表示开启*/ public static boolean isLocationEnabled(Context contex ...

  2. 高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed解决方案

    高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed的解决方法. 前言:此坑踩得我挺难受的,搞了三天 需求:进入页面,获取用户具体经纬度并 ...

  3. Android Studio之高德地图实现定位和3D地图显示

    在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码 ...

  4. android------之高德地图实现定位和3D地图显示

    2019独角兽企业重金招聘Python工程师标准>>> 在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德 ...

  5. vue调用高德地图实现定位

    vue调用高德地图实现定位 第一步创建高德地图key 第二步:下载vue-amap npm install vue-amap --save 第三步:在项目main.js引入vue-amap impor ...

  6. 利用高德地图实现定位功能

    最近学习使用高德地图可谓是出师不利....嘛,不知道为啥高德给的3d地图的jar包用不了,最后实在没办法用了2d的jar包,然后在大佬和其他资料的帮助下,实现了高德地图的定位功能.接下来就说一下具体的 ...

  7. 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo

    高德地图--浏览器定位+点击获取经纬度+去除高德百度地图左下角logo 1.代码 <!doctype html> <html> <head><meta cha ...

  8. 高德地图的定位和大头针

    最近没事研究了下高德地图的使用,简单的介绍下高德地图的定位和大头针功能,至于关键字检索POI等功能 ,可以去看完整的Demo: 使用高德地图 首先导入高德SDK,至于导入的具体方法,可以去看官网:ht ...

  9. android高德地图默认当前位置,【报Bug】1.9.2 android 高德地图无法定位到当前位置...

    详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] 1.9.2版本 a ...

最新文章

  1. Exposing/Accessing JBoss JNDI Objects/Datasources From an External JVM
  2. php如何抓取网页内容,php如何抓取网页数据?
  3. 那些你从未见过的神奇物理化学实验,今天全给你整理了!
  4. java线程唤醒与等待_Java线程的等待与唤醒
  5. 文件件服务器,文件件服务器
  6. 老实说,WPF对自由开发者与小微型团体来说就是个毒瘤!
  7. 02-最基本的SELECT语句
  8. 无线投影之Miracast技术 收集
  9. ps 毛发 边缘_【常用抠图小技巧】PS调整边缘扣毛发
  10. 【原创】Web前端性能优化思维导图
  11. 映美精两个相机同步采集求助
  12. 软件的静态测试和动态测试【软件测试分类】
  13. 快速输入对号框(框中加对号或者对勾)的方法
  14. 打开计算机系统无法访问指定的,win10系统运行软件时提示“无法访问指定设备路径或文件的修复步骤...
  15. 微信小程序反编译wxss文件缺失_微信小程序反编译 wxss 丢失问题
  16. 吉首 - 超超的自闭意思(素筛+暴力)
  17. 【歪门邪道】Android中如何快速回到主页
  18. JSP设置Excel表格换行_Excel中快速将阿拉伯数字转化为大写文字的妙招
  19. 百度输入法输入汉字却显示英文
  20. hank's sap blog

热门文章

  1. 一文读懂:机房精密空调分类、标准、送风、设计要求
  2. 树莓派魔镜MagicMirror —— 1 前期准备工作
  3. 第15讲 推断未知:统计推断的基本方法
  4. W phase 学习
  5. XP中i386/lang的文件夹下载
  6. 谷歌Shell脚本编程规范笔记
  7. 懂安全攻防的工程师,竟如此吃香!
  8. Symbian OS内存泄漏
  9. Python处理Excel表格匹配问题
  10. 【转载】通过 FUNCTION NET_DUE_DATE_GET 得到MIRO付款日期(DUE ON DATE)