Android中配置高德地图和定位蓝点

最近一直在学习android,学到地图这里,遇到的坑也不少,所以就把它分享出来,一和大家一起学习,二为以后写项目看,

一.获取key
1.创建应用

首先,您得上(高德地图开放平台官网)注册一个账号,当然,如果有了就直接登录。
其次,就是在应用管理中,创建一个应用,当然如果您之前已经创建了就跳过(下面我是已经创建过
在这里插入图片描述
在这里插入图片描述

2.添加key

在创建的应用上点击"添加"按钮,在弹出的对话框中,依次输入应用名名称,选择绑定的服务为“Android平台SDK”,输入发布版安全码 SHA1、调试版安全码 SHA1(可忽略)、以及 Package,如下图所示:

需要注意的是: 1个KEY只能用于一个应用(多渠道安装包属于多个应用),1个Key在多个应用上使用会出现服务调用失败。
在这里插入图片描述

在这里插入图片描述
然后勾选协议,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了。
在这里插入图片描述
然后到这里,肯定有人问,如何去获取SHA1和包名呢,下面就来说下如何获取:

1.1 获取SHA1码

下面方法是通过Android Studio获取SHA1的

  1. 第一步:使用 WIN+R 快捷键,并输入cmd打开控制台工具
    在这里插入图片描述

  2. 第二步:输入命令:keytool -v -list -keystore keystore文件路径。
    在这里插入图片描述输入密钥后回车(如果没设置密码,可直接回车),此时可在控制台显示的信息中获取 Sha1 值,如下图所示:
    在这里插入图片描述

1.2 获取package名

直接在android项目的build.gradle下面的
在这里插入图片描述

二.android studio配置工程
1. 添加jar包

在Anroid地图SDK相关下载中下载AAR包
在这里插入图片描述

将下载的地图 SDK 的 jar包复制到工程的 libs 目录下
在这里插入图片描述

2.添加so库
  1. 首先下载so库

在这里插入图片描述

  1. 在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。如图所示:
    在这里插入图片描述

  2. 在build.gradle中配置
    3.1. 在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址
    Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加(我这个是自动生成的,不需再配置)
    在这里插入图片描述

    3.2.主工程的build.gradle文件在Project目录中位置:
    在这里插入图片描述

三.创建地图

在创建地图之前,还需配置一些权限(在清单文件中配置)

1. 权限声明

在这里插入图片描述

2. 设置高德key

在application里面设置
在这里插入图片描述

3.创建地图

MapView 是 AndroidView 类的一个子类, 用于在 Android View 中放置地图。 MapView 是地图容器。用 MapView 加载地图的方法与 Android 提供的其他 View 一样,具体的使用步骤如下:

1. 首先在布局xml文件中添加地图控件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>
2.java文件

amapView = findViewById(R.id.map); //获取地图控件
amapView.onCreate(savedInstanceState); // 通过onCreate( )方法创建地图

public class MainActivity extends AppCompatActivity {
 private MapView amapView;
 private AMap aMap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        amapView = findViewById(R.id.map);
        amapView.onCreate(savedInstanceState);  // 1. 创建地图
     }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
        amapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
        amapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
        amapView.onPause();
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
        amapView.onSaveInstanceState(outState);
    }
}

到这一步时,地图是可以显示出来了,只是它不拥有其他比如定位,缩放等功能,如下:
在这里插入图片描述

四.定位蓝点(在Activity生命周期onCreate()中执行)

AMap 类是地图的控制器类,用来操作地图。它所承载的工作包括:地图图层切换(如卫星图、黑夜地图)、改变地图状态(地图旋转角度、俯仰角、中心点坐标和缩放级别)、添加点标记(Marker)、绘制几何图形(Polyline、Polygon、Circle)、各类事件监听(点击、手势等)等,AMap 是地图 SDK 最重要的核心类,诸多操作都依赖它完成。

1.初始话AMap对象

先创建个全局对象

 private AMap aMap;

然后判断其是否为null,是的就执行下面这段代码

        if(aMap == null){
            aMap = amapView.getMap();
        }
2. 实现定位蓝点
 // 3.实现定位蓝点(显示当前位置)
        MyLocationStyle myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类
        //连续定位模式、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。
        // (1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
        myLocationStyle.interval(2000); //连续定位模式下的定位间隔(只在连续模式下生效)
        
        aMap.setMyLocationStyle(myLocationStyle);
        aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。
        aMap.setMyLocationEnabled(true);//true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。

通过上面的简单配置后,得到的效果如下所示:在这里插入图片描述
但还要注意点:到这步的时候得检查手机有没有打开GPS功能,还要通过手机设置找到这个app并开启手机定位权限,要重要的就是还要看看有没有在清单文件中设置了下面权限(有时就会弄漏)

  <!--    获取GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
五.更多功能会在后续添加
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
以下是在 Android 应用程序使用高德地图实现根据实时定位移动小点的代码示例: 1. 首先,您需要在您的 Android 项目添加高德地图 SDK 的依赖项。 2. 在您的布局文件添加一个 MapView 组件来显示地图。 3. 在您的代码,创建一个 AMap 对象,并调用其 setMyLocationEnabled() 方法来启用定位功能。 ```java AMap aMap = mapView.getMap(); aMap.setMyLocationEnabled(true); ``` 4. 创建一个 AMapLocationClient 对象,并使用它来获取设备的实时位置。 ```java AMapLocationClient locationClient = new AMapLocationClient(getApplicationContext()); locationClient.setLocationListener(new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { // 处理设备的实时位置数据 } }); locationClient.startLocation(); ``` 5. 在 onLocationChanged() 回调函数,使用 AMap 对象的 setMyLocationStyle() 方法来设置小点的样式,并使用 moveCamera() 方法将地图移动到新的位置。 ```java @Override public void onLocationChanged(AMapLocation aMapLocation) { // 处理设备的实时位置数据 MyLocationStyle myLocationStyle = new MyLocationStyle(); myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE); aMap.setMyLocationStyle(myLocationStyle); aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude()))); } ``` 6. 最后,在您的代码,使用 Marker 类来创建小点,并将其添加到地图上。 ```java MarkerOptions markerOptions = new MarkerOptions(); markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.point)); Marker marker = aMap.addMarker(markerOptions); ``` 这些代码示例可以让您在 Android 应用程序使用高德地图实现根据实时定位移动小点。希望这些信息能够帮助到您。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值