Android 高德地图入门指南

一、搜索高德开放平台,进行注册、登录和认证,进入到自己的控制台,打开应用管理下的我的应用,点击创建新应用

高德地图开放平台的访问地址:https://lbs.amap.com/

第一步 注册开发者用户

直接在页面上注册就好了,使用手机号,个人开发者认证的话需要支付宝扫码认证。

第二步 创建应用

登录控制台以后,选择右上角的应用—>我的应用—>创建新的应用

输入应用名称—>然后选择应用类型(填写的内容与你使用地图服务是没有影响和关系的)

第三步 创建Key

  1. 在我的应用页面点击“添加”,如下图
  2. 如何让获取“发布版安全码SHA1”:
    直接点击“如何获取”或跳到:常见问题 | 高德地图API (amap.com)
    注1:(Terminal工具和cmd类似)如何打开Android Studio的Terminal工具(【Alt+F12快捷键】选项卡—>Help—>Find Action...【Ctrl+Shift+A快捷键】—>Terminal),建议使用 keytool(jdk自带工具)获取SHA1
    注2:若配置了jdk的环境变量,则不需要再进入java的bin目录,debug.ketstore的路径如下图的“位置”
    注3:密钥库的口令/密码一般为:android
  3. 如何让获取“PackageName”:
    src/main/java下的包名,或是可以打开 Android 应用工程的“AndroidManifest.xml”配置文件,package属性所对应的内容为应用包名。或是如下图

 二、下载Android 地图SDK并设置相关权限及地图显示

  1.  下载Android地图SDK(JAR包的形式)
  2. 在libs目录下引入JAR包和armeabi文件夹
    首先将解压出来的jar包和armeabi文件夹拷贝到project目录下的libs中,并将jar包引入项目中(选中jar包,右键-选择 Add As Library,导入到工程中)
  3. 在build.gradle中添加以下代码(其中 > 代表下一级)
    android > 
        defaultConfig > 
    
            ndk {
                abiFilters 'armeabi'
            }
    android > 
    
        sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }
  4. 在AndroidManifest.xml文件清单的application中添加如下代码
            <meta-data
                android:name="com.amap.api.v2.apikey"
                android:value="请输入您应用的Key"/>
  5. 在AndroidManifest.xml文件清单申明权限(其中前6个为基础)
    <!--地图需要的权限-->
    <!--允许访问网络,必选权限-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允许写入扩展存储,用于数据缓存,若无此权限则写到私有目录-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--允许获取网络状态,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--允许获取wifi网络信息,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--允许获取设备和运营商信息,用于问题排查和网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!--允许获取粗略位置,若用GPS实现定位小蓝点功能则必选。通过WiFi或移动基站获取粗略定位(误差在30~1500米)-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!--用于访问GPS定位。GPS精确定位(精度10米以内)-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!--允许获取wifi状态改变,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!--用于申请调用A-GPS模块-->
    	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <!--用于申请获取蓝牙信息进行室内定位-->
    	<uses-permission android:name="android.permission.BLUETOOTH" />
    	<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <!--这个权限用于允许程序在手机屏幕关闭后后台进程仍然运行-->
    	<uses-permission android:name="android.permission.WAKE_LOCK" />
    <!--允许写设备缓存,用于问题排查-->
    <!--    <uses-permission android:name="android.permission.WRITE_SETTINGS" />-->
    <!--允许读设备等信息,用于问题排查-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!--如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明-->
        <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
    注意:若使用第7项,则需要先使用第6项
  6. activity_main.xml代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        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">
        </com.amap.api.maps.MapView>
    
    </LinearLayout>
  7. MainActivity.java代码
    public class MainActivity extends AppCompatActivity {
    
        //    private Context context = getApplicationContext();
        private Context context = this;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            MapsInitializer.updatePrivacyShow(context,true,true);
            MapsInitializer.updatePrivacyAgree(context,true);
    
            MapView mapView = (MapView) findViewById(R.id.map);
            mapView.onCreate(savedInstanceState);
        }
    }
  8. 此时运行即可出现高德地图

三、总结

我一开始下载的是 Android地图SDK(AAR包的形式),但是拷贝AAR包到libs目录下,然后在AndroidManifest.xml文件清单引入中通过flatDir{dirs 'libs'}引入libs下的文件时,会抛出异常

A problem occurred evaluating project ':app'.
> Build was configured to prefer settings repositories over project repositories but repository 'flatDir' was added by build file 'app\build.gradle'

问题:

对于某些模拟器来说会发生Warning(警告):Device supports x86, but APK only supports armeabi on device Nexus 5XAPI 30
翻译:设备支持x86,但APK仅支持设备Nexus 5XAPI 30上的armeabi(其中“Nexus 5XAPI 30”指模拟器的名字)
解决办法:将2.3中的代码修改为如下

android > 
    defaultConfig > 

        ndk {
            abiFilters 'arm64-v8a','armeabi','armeabi-v7a','x86','x86_64'
        }
android > 

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs','src/main/jniLibs']
        }
    }

注意:除了JAR包的位置不变外,将libs下的armeabi文件夹删除,在src/main/新建jniLibs文件夹,将解压包中的文件夹复制到jniLibs中再通过jniLibs.srcDirs引入

目前 Android 支持的 CPU 架构有有以下几种:

CPU架构描述
armeabi第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢
armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能
arm64-v8a第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit
x86intel 32位,一般用于平板
x86_64intel 64位,一般用于平板
mips少接触
mips64少接触

具体详见:Android-ABIFilter-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64_DRPrincess的博客-CSDN博客_device supports x86

四、显示定位蓝点

只需要在MainActivity.java的onCreate中添加以下代码即可(注意:建议使用真机调试并打“定位服务”)

UiSettings aMapUiSettings = aMap.getUiSettings(); //地图内置UI及手势控制器。
aMapUiSettings.setMyLocationButtonEnabled(true); //设置定位按钮是否可见,
aMap.setMyLocationEnabled(true); //设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。

五、获取并显示定位信息

1、AMapLocationClient类

描述:定位服务类。此类提供单次定位、持续定位、最后位置相关功能。

类继承结构:

├── java.lang.Object
        └── com.amap.api.location.AMapLocationClient

API地址:AMapLocationClient (aliyun-inc.com) 

2、AMapLocationClientOption类

描述:定位参数设置,通过这个类可以对定位的相关参数进行设置。在AMapLocationClient进行定位时需要这些参数

类继承结构:

├── java.lang.Object
        └── com.amap.api.location.AMapLocationClientOption

API地址:AMapLocationClientOption (aliyun-inc.com)

3、AMapLocation类

描述:

类继承结构:

├── java.lang.Object
        └── Location
                └── com.amap.api.location.AMapLocation

API地址:AMapLocation (aliyun-inc.com)

4、

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值