做网站什么框架比较好,在线做ppt的网站源代码,嘉盛建设集团官方网站,thinkphp可以做网站吗#x1f4d6;Android搭建3D高德地图详细教程 #x1f4d6;第1章 高德地图介绍✅了解高德地图✅2D地图与3D地图 #x1f4d6;第2章 搭建3D地图并显示✅第 1 步#xff1a;创建 Android 项目✅第 2 步#xff1a;获取高德Key✅第 3 步#xff1a;下载地图SDK✅第 4 步… Android搭建3D高德地图详细教程 第1章 高德地图介绍✅了解高德地图✅2D地图与3D地图 第2章 搭建3D地图并显示✅第 1 步创建 Android 项目✅第 2 步获取高德Key✅第 3 步下载地图SDK✅第 4 步添加地图 SDK通过拷贝添加SDK开发包通过Gradle集成SDK ✅第 5 步项目添加Key✅第 6 步项目配置权限✅第 7 步显示地图 第1章 高德地图介绍
✅了解高德地图
高德地图是一款由中国高德软件开发的地图应用程序提供了包括地图、导航、公交、步行、骑行、出行、地理编码、逆地理编码、地图搜索、路径规划、天气预报、地图 SDK 等多种功能。
其中Android 地图 SDK 是一套地图开发调用接口开发者可以轻松地在自己的 Android 应用中加入地图相关的功能包括地图显示含室内、室外地图、与地图交互、在地图上绘制、兴趣点搜索、地理编码、离线地图等功能。
高德地图开放平台https://lbs.amap.com/ 接下来的Android高德地图实战会经常参考官网中Android平台的高德地图相关文档。 ✅2D地图与3D地图
2D地图和3D地图是两种不同类型的地图呈现方式 2D 地图二维地图 以平面方式呈现地理信息通常包括经度和纬度坐标。这类地图是平面的类似于传统的纸质地图其中只有 x 和 y 轴。 3D 地图三维地图 则以三维方式呈现地理信息通常包括经度、纬度和高度坐标。这类地图更加真实地模拟了地球表面的地形和建筑物。
在高德地图中2D地图在2019-11-14起便停止维护了版型停留在V6.0.0 而3D地图和搜索一直在维护更新中 所以后面的案例都是围绕3D地图展开。 3D地图截止本篇文章编写时最近一次更新在2023-08-15版本V9.8.2 。 第2章 搭建3D地图并显示 2D地图和3D地图搭建差不多只是3D地图需要添加so库而2D地图无需这一步骤详细步骤参考如下 ✅第 1 步创建 Android 项目
本篇案例使用的环境如下
编译器Android Studio Giraffe | 2022.3.1JDKJDK11Gradle插件版本7.2.1,Gradle版本7.3.3SDK28相当于android 9.0 2022.3.1的Android Studio对应的Gradle插件版本在3.2-8.1之间都可以可以参考官网: https://developer.android.google.cn/studio/releases/gradle-plugin?hlzh-cn ✅第 2 步获取高德Key 这里默认你已经创建好了高德开发平台账号,如果没有注册,则先注册一下 **第1步**创建新应用。进入到控制台点击应用管理-我的应用-创建新应用 第2步: 添加Key **第3步**获取SHA1安全码
获取SHA1安全码只需要一行命令keytool -v -list -keystore keystore的文件路径 这行命令的本质就是使用JDK的bin目录下的keytool.exe文件来执行keytool 指令根据keystore来生成SHA1安全码。 说明keystore 文件为 Android 签名证书文件。 注意 keystore有开发模式debug和发布模式release两种模式获取的SHA1值是不同的发布 apk时 需要根据发布apk对应的keystore重新配置Key。而debug.keystore是在SDK的安装路径.android\下可以找到。 所以只要有JDK环境和keystore文件即可生成SHA1安全码下面提供两种方式
Android Studio获取SHA1JDK自带工具获取SHA1
方式一通过Android Studio获取SHA1
打开Android Studio的Terminal工具在控制台直接输入下面命令
//1. 输入指令:
keytool -v -list -keystore E:\software\Android\AndroidSdk\.android\debug.keystore//2. 输入密钥库口令: 默认密码是android方式一使用 keytooljdk自带工具获取SHA1了解
winR运行输入cmd进入控制台 在弹出的控制台窗口中输入 cd .android 定位到 .android 文件夹 注意 .android文件夹是在SDK安装路径是你安装Android Studio一同安装的如果你没有选择在其他位置那就默认在C盘直接使用cd .android即可下面图片是我安装在其他位置。 **第4步**生产key
将SHA1安全码在第二步进行输入并提交即可获取key 提交后就能看到我们生成的调试版本key ✅第 3 步下载地图SDK
官网地址https://lbs.amap.com/api/android-sdk/download/ ✅第 4 步添加地图 SDK
通过拷贝添加SDK开发包 1、添加 jar 文件 将下载的地图 SDK 的 jar包复制到工程此处截图以官方示例Demo为例子的 libs 目录下如果有老版本 jar 包在其中请删除。如图所示 2、添加 so 库 说明3D地图才需要添加so库2D地图无需这一步骤。
保持project查看方式以下介绍两种导入so文件的方法。
将下载文件的 armeabi 文件夹复制到 libs 目录如果有这个目录,请将下载的 so 库复制到这个目录。 然后打开build.gradle找到 sourceSets 标签在里面增加一项配置如图所示 没有则添加 sourceSets {main {jniLibs.srcDirs [libs]}}通过Gradle集成SDK 1、在Project的settings.gradle中添加国内maven、jcenter仓库地址 在2022年1月的Gradle7.1.0版本做了更新将buildscript和allprojects的仓库配置被挪到Project下的setting.gradle里面了所以不在build.gradle文件中配置了。 repositories {maven { url https://maven.aliyun.com/repository/public/ }maven { url https://maven.aliyun.com/repository/google/ }maven { url https://maven.aliyun.com/repository/jcenter }google()mavenCentral()gradlePluginPortal()}2、在主工程的build.gradle文件配置dependencies 根据项目需求添加SDK依赖。引入各个SDK功能最新版本 dependencies 配置方式如下
SDK引入代码3D地图compile ‘com.amap.api:3dmap:latest.integration’2D地图compile ‘com.amap.api:map2d:latest.integration’导航compile ‘com.amap.api:navi-3dmap:latest.integration’搜索compile ‘com.amap.api:search:latest.integration’定位compile ‘com.amap.api:location:latest.integration’
主工程的build.gradle文件在Project目录中位置
dependencies {implementation fileTree(dir: libs, include: [*.jar])implementation com.amap.api:3dmap:latest.integrationimplementation com.amap.api:search:latest.integrationimplementation com.amap.api:location:latest.integration
}注意
3D地图 SDK 和导航 SDK5.0.0 版本以后全面支持多平台 so 库(armeabi、armeabi-v7a、arm64-v8a、x86、x86_64)开发者可以根据需要选择。同时还需要注意的是如果您涉及到新旧版本更替请移除旧版本的 so 库之后替换新版本 so 库到工程中。navi导航SDK 5.0.0以后版本包含了3D地图SDK所以请不要同时引入 map3d 和 navi SDK。如果build失败提示com.amap.api:XXX:X.X.X 找不到请确认拼写及版本号是否正确如果访问不到jcenter可以切换为maven仓库尝试一下。依照上述方法引入 SDK 以后不需要在libs文件夹下导入对应SDK的 so 和 jar 包会有冲突。
✅第 5 步项目添加Key
在AndroidManifest.xml的application标签中配置Key
applicationandroid:icondrawable/iconandroid:labelstring/app_name meta-dataandroid:namecom.amap.api.v2.apikeyandroid:value请输入您的用户Key/……
/application✅第 6 步项目配置权限
在AndroidManifest.xml中配置权限:
地图SDK
!--允许访问网络必选权限--
uses-permission android:nameandroid.permission.INTERNET / !--允许获取粗略位置若用GPS实现定位小蓝点功能则必选--
uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION / !--允许获取设备和运营商信息用于问题排查和网络定位若无gps但仍需实现定位小蓝点功能则此权限必选--
uses-permission android:nameandroid.permission.READ_PHONE_STATE / !--允许获取网络状态用于网络定位若无gps但仍需实现定位小蓝点功能则此权限必选--
uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !--允许获取wifi网络信息用于网络定位若无gps但仍需实现定位小蓝点功能则此权限必选--
uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / !--允许获取wifi状态改变用于网络定位若无gps但仍需实现定位小蓝点功能则此权限必选--
uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE / !--允许写入扩展存储用于数据缓存若无此权限则写到私有目录--
uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / !--允许写设备缓存用于问题排查--
uses-permission android:nameandroid.permission.WRITE_SETTINGS / !--允许读设备等信息用于问题排查--
uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE / 搜索SDK
!--允许访问网络必选权限--
uses-permission android:nameandroid.permission.INTERNET / !--允许读设备等信息用于问题排查--
uses-permission android:nameandroid.permission.READ_PHONE_STATE / !--允许获取网络状态--
uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !--允许获取wifi网络信息--
uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / !--允许写入扩展存储用于搜索结果缓存若无此权限则写到私有目录--
uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / !--允许写设备缓存用于问题排查--
uses-permission android:nameandroid.permission.WRITE_SETTINGS / !--允许读设备等信息用于问题排查--
uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE / 可以更具需求来添加权限配置 ✅第 7 步显示地图
分为三个步骤:
在布局文件中添加地图控件在activity或fragment中初始化地图容器使用AMap地图控制器类来显示并操作地图
在activity_main.xml布局文件中添加MapView组件
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivitycom.amap.api.maps.MapViewandroid:idid/mapandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent/com.amap.api.maps.MapView/LinearLayout在activity中初始化地图容器 MapsInitializer.updatePrivacyShow(this,true,true);//隐私合规接口MapsInitializer.updatePrivacyAgree(this,true);//隐私合规接口MapView mapView findViewById(R.id.map); //获取地图视图对象mapView.onCreate(savedInstanceState);//创建地图获取地图对象并显示 if (aMap null) {aMap mMapView.getMap(); //获取地图对象并显示}注意初始化地图容器之前必须进行隐私合规接口的检查否则可能不能正常显示map或者地图将白屏这是因为近几年来关于用户隐私问题越来被重视。
完整示例代码如下
public class MainActivity extends AppCompatActivity {private MapView mMapView null;//地图容器private AMap aMap;//地图对象AMapOverrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化地图定位initMap(savedInstanceState); }/*** 初始化地图* param savedInstanceState*/private void initMap(Bundle savedInstanceState) {MapsInitializer.updatePrivacyShow(this, true, true);//隐私合规接口MapsInitializer.updatePrivacyAgree(this, true);//隐私合规接口AMapLocationClient.updatePrivacyAgree(this, true);AMapLocationClient.updatePrivacyShow(this, true, true);mMapView findViewById(R.id.map); //获取地图视图对象mMapView.onCreate(savedInstanceState);//创建地图if (aMap null) {aMap mMapView.getMap();}}/*** 生命周期-onDestroy*/Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy(); //销毁地图}/*** 生命周期-onResume*/Overrideprotected void onResume() {super.onResume();mMapView.onResume(); //重新绘制加载地图}/*** 生命周期-onPause*/Overrideprotected void onPause() {super.onPause();mMapView.onPause();//暂停地图的绘制}/*** 生命周期-onSaveInstanceState*/Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mMapView.onSaveInstanceState(outState);//保存地图当前的状态}
}在项目中使用地图的时候需要注意需要合理的管理地图生命周期这非常的重要。 ✅第1,2章 Android搭建3D高德地图详细教 ✅第 3 章 初始化定位并显示小蓝点 ✅第 4 章Android高德地图绘制标记点Marker ✅第 5 章Android高德地图控件交互详细介绍