Android 集成高德地图

一:介绍
高德地图的集成对开发者来说很方面,也是越来越多的app的选择。
二:账号与Key的申请
第一步:注册高德开发者(这就不用说了)
第二步:去控制台创建应用
https://console.amap.com/dev/...
image.png
第三步:获取key
image.png
最后会获取到key值
image.png
怎么获取我们应用的sha1 值
cmd cd 到 cd C:\Java\jdk1.8.0_201\bin到该目录下,这个目录是我存放jks的目录,同理,你放的在哪里,就到哪里
image.png
keytool.exe -list -keystore C:\微信\zhiyinsigned.jks
秘钥: 自己设定密码(一般123456)
image.png
keytool -list -v -keystore debug.keystore(加上一个-v可以获取到Md5值,这是一个debug模式下的值)
可以获取MD5码 SHA1码 SHA256码
三:下载高德SDK
image.png
我这里3D地图开发
第一步:添加jar包
将下载的地图 SDK 的 jar包复制到工程的 libs 目录下,如果有老版本 jar 包在其中,请删除
image.png
第二步:添加so库
说明:3D地图才需要添加so库,2D地图无需这一步骤。
image.png
2D地图解压出来只有一个jar包
如果在main下的jniLibs下添加so库就不需要配置什么,请看我之前的https://segmentfault.com/a/11...
但是在libs下配置

android{


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

第三步:ndk配置

android{
defaultConfig {
  ndk {
            //选择要添加的对应cpu类型的.so库。
            abiFilters 'armeabi-v7a'
        }
        }
        }

第四步:添加jar导入
通过jar右键Add as library就可以实现jar包导入
implementation files('libs\Android_Map3D_SDK_V8.0.0_20210713.jar')
第二种方法

//和dependencies 同级别
 repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
  implementation(name:'Android_Map3D_SDK_V8.0.0_20210713',ext:'jar')
  }

四:项目下配置
第一步:在AndroidManifest下配置下key值
image.png
第二步:添加访问权限

 <!--允许程序打开网络套接字-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允许程序设置内置sd卡的写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--允许程序获取网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--允许程序访问WiFi网络信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--允许程序读写手机状态和身份-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

第三步:简单使用布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>

使用

public class SixTeenActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_six_teen);
        MapView mapView=findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);//此方法必须重写
        AMap aMap=mapView.getMap();
    }
}

这样集成算完成了,但是这种jar的集成
现在还有一种方法时Gradle 集成SDK
五:通过Gradle集成SDK
之前向这样的jar包需要集成在项目的libs下
image.png
现在通过Gradle下编译
在主工程的build.gradle文件配置dependencies
根据项目需求添加SDK依赖。引入各个SDK功能最新版本, dependencies 配置方式如下:

SDK添加引入
3D地图implementation 'com.amap.api:3dmap:8.0.0'
2D地图implementation 'com.amap.api:map2d:6.0.0'
导航implementation 'com.amap.api:navi-3dmap:8.0.0'
搜索implementation 'com.amap.api:search:7.9.0'
定位implementation 'com.amap.api:location:5.3.0'
dependencies {
    //3D地图so及jar
    implementation 'com.amap.api:3dmap:8.0.0'
    //2D地图so及jar
//    implementation 'com.amap.api:map2d:6.0.0'
    //定位功能
//    implementation 'com.amap.api:location:5.3.0'
    //搜索功能
    implementation 'com.amap.api:search:7.9.0'
    }

这种Gradle的引入不需要添加jar包和so库了更加简便了操作
1.依照上述方法引入 SDK 以后,不需要在libs文件夹下导入对应SDK的 so 和 jar 包,会有冲突。
2.navi导航SDK 5.0.0以后版本包含了3D地图SDK,所以请不要同时引入 map3d 和 navi SDK。

具体开发的实现需要参考开发文档去实现,这里实现的是集成
https://lbs.amap.com/api/andr...

结尾:当没有能力时,被动藏拙,怕被看出;当有能力时,主动藏拙,怕锋芒毕露。人何时能做真正的自己


Rocky_ruan
57 声望5 粉丝

不积跬步,无以至千里