地图APP开发日志 Day 1
目录
- 地图APP开发日志 Day 1
- 前期准备
- 功能
- 地图显示
- 注意
- 定位失败
- 无法显示定位蓝点
- 手动定位
地图APP开发日志 Day 1
一个基于高德SDK个人地图项目
为什么要自己写?
- 不想要广告
- 我只需要某些功能
- 需要一个简介的界面
前期准备
- 在高德控制台申请高德地图key,选择Android平台
- 创建最小sdk为31的Kotlin安卓项目
这个App可能也只会在我经常用的手机上使用,并不想对其他版本进行适配,所以sdk选择到了和手机一致
- 签名文件,在debug和release模式下均使用该签名文件
- 下载开发SDK,选择导航合包
功能
地图显示
- 权限列表
<!--允许访问网络,必选权限--> <uses-permission android:name="android.permission.INTERNET" /> <!--允许获取粗略位置,若用GPS实现定位小蓝点功能则必选--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/> <!--允许获取设备和运营商信息,用于问题排查和网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--允许获取网络状态,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--允许获取wifi网络信息,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--允许获取wifi状态改变,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!--允许写入扩展存储,用于数据缓存,若无此权限则写到私有目录--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"tools:ignore="ScopedStorage" /> <!--允许写设备缓存,用于问题排查--> <uses-permission android:name="android.permission.WRITE_SETTINGS"tools:ignore="ProtectedPermissions" /> <!--允许读设备等信息,用于问题排查--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 还需要在application节点添加key --> <meta-dataandroid:name="com.amap.api.v2.apikey"android:value="key"/>
- jar包和so库
同时build.gradle
需要同步更新android {...defaultConfig {ndk {//设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)// 我的手机是这个架构 所以只加了这一个,供选择的还有"armeabi", "armeabi-v7a", "x86","x86_64"abiFilters "arm64-v8a"}}... }dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])... }
- xml页面
根据自己的需要配置MapView
的大小以及布局,我这里是全屏显示地图,同时需要在该View
上层添加控制视图,仿照高德官方的界面添加了搜索栏和定位按钮<com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerInParent="true"/>
- 主题样式
因为要全屏显示地图,首先需要将ActionBar
隐藏,直接通过继承带有NoActionBar
的主题,用下方style
可以实现全屏显示视图,同时带来的问题需要通过xml修改,如View
的约束应该考虑到可能被通知栏遮挡、底部导航方式改变时需要动态修改布局(我不想适配所以以我最舒服的导航方式进行开发,直接xml写死底部margin)<style name="MainActivity" parent="Theme.Topcoolchamap"><item name="android:windowLightStatusBar">true</item><item name="android:windowTranslucentNavigation">true</item><item name="android:statusBarColor" >@color/transparent</item> </style>
- 地图初始化
按照文档说明在指定方法执行AMap
对应方法// 设置定位蓝点样式 val myLocationStyle = MyLocationStyle().apply {myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)showMyLocation(true)strokeColor(getColor(R.color.colorPrimaryVariantAlpha))radiusFillColor(getColor(R.color.colorPrimaryAlpha)) } amap = binding.map.map.also {it.myLocationStyle = myLocationStyle// 允许显示定位蓝点it.isMyLocationEnabled = true// 隐藏加减缩放和logo,设置一些列监听it.uiSettings.let { ui ->// 隐藏地图缩放按钮ui.isZoomControlsEnabled = false// 隐藏高德地图图标ui.setLogoBottomMargin(-1000)// 当地图加载完毕时将相机移至中心it.addOnMapLoadedListener(this)// 定位点发生变化时触发,不断更新当前定位点缓存it.addOnMyLocationChangeListener(this)} }
完成上述内容即可运行app,就可以看到带有定位蓝点的地图,因为涉及当前地址,所以将地图缩小了
注意
定位失败
需要在Application
中执行下两行内容
AMapLocationClient.updatePrivacyShow(this, true, true)AMapLocationClient.updatePrivacyAgree(this, true)
无法显示定位蓝点
在高版本中需要提供精确定位权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
手动定位
使用OnMyLocationChangeListener
回调当前定位点时需要判断定位点是否存在,或者经纬度信息不为0
如果使用(0, 0)进行定位的话,可能就飘到大海上了
override fun onMyLocationChange(p0: Location?) {p0?.let {if (p0.latitude == 0.0) {return}"定位点发生改变 ${p0.latitude}, ${p0.longitude}".d()this.location = p0}}
地图APP开发日志 Day 1相关推荐
- 基于百度地图sdk的地图app开发(七)——导航和模拟导航
这是基于百度地图sdk的地图app开发系列博客第七篇 代码仓库位置:https://github.com/YanhuiLu89/lmap.git 上一篇 基于百度地图sdk的地图app开发(六)--路 ...
- 移动App开发日志开发实例
简单的移动端App开发案例,持续更新... 案例是在HBuilder中开发完成的,因为能够方便的一边编写一边及时查看显示结果,而且编写完成后的打包也是简便(可以通过编写web移动app便捷的云打包为a ...
- Android地图定位开发技术汇总
Android地图定位开发技术汇总 由于课程需要,我查询了一些Android中的地图定位开发技术,该技术在理论课日常练习中应用到了模拟高德地图APP开发中,同时也运用到了实验课结业大作业--小农夫AP ...
- Android开发日志打卡APP(二)
Android开发日志打卡APP(二) 文章目录 Android开发日志打卡APP(二) 前言 开发过程 一.背景和标题 二.日志图标 三.日志弹框 前言 在之前的文章中,准备工作已经完成,现在我们将 ...
- 地图导航APP开发功能
地图导航APP开发,地图导航APP开发功能 1.服务平台追踪定位:一部分用户方位感较弱,用户只需打开手机定位服务,APP便会即时表明用户部位信息. 2.路线规划信息:用户应用地图导航APP,则是期望能 ...
- Android开发日志打卡APP(一)
Android开发日志打卡APP(一) 文章目录 Android开发日志打卡APP(一) 简介 界面展示 内容总结 1.控件 2.布局 3.技术 开发过程 准备工作 启动页面 底部导航栏 简介 初 ...
- ionic开发——打开百度地图APP如何传递参数,导航路线
首先,打开百度地图APP的方法不知道朋友可以看一下这里: <ionic开发--检测是否安装某APP,如果安装打开该APP>http://blog.csdn.net/yu1731013344 ...
- 地图导航APP开发作用
地图导航APP开发,地图导航APP开发作用. 近些年大家生活的节奏持续加速,很多人针对出游造成了比较大要求,但要想在日常生活中进行有关活动需搞好很多的准备工作,终究用户去到生疏地区都要提早了解好行为路 ...
- Android开发-基于百度地图API开发仿滴滴出行APP界面的实现
前 言 近年来,由于移动互联网快速的发展以及基于移动设备的APP的普及,移动互联网改变了人们的生活方式.从线上的电子支付到线下的出行,移动互联网是当今社会人们生活不可或缺的一部分,而线下出行的网约车的 ...
最新文章
- Clojure程序设计
- 单链表基本操作(可执行程序),二级指针使用必要性的初步理解
- 【django】基础条件查询
- jira软件 linux 安装,JIRA使用教程:在Linux上安装JIRA
- 奈飞文化集:自由与责任_如何与自由客户合作:最好的合同就是您永远不必执行的合同...
- java如何初始化对象_java中对象的初始化过程
- Bailian4121 股票买卖【最值】
- scala json处理入门
- python语言只能用4个空格_python - 单词之间只保留一个空格,用replace为什么会出错...
- 判断请求是通过点击链接还是直接输入网址
- Linux网络属性配置—修改配置文件
- python怎么看自己安装的第三方包_安装第三方包查看python版本/第三方包版本
- eplan2.6安装教程
- 台式电脑主机前面耳机插孔没声音的解决方法
- 工商管理专业知识与实务(中级)【4】
- python重复命令_python系列的连接和重复操作
- 鼎立测试软件能锁网吗,路测软件鼎利通信Pioneer操作培训PPT(ET128).ppt
- 计算机x线平扫对人健康有影响吗,X线检查-医学影像频道-家庭医生在线 第16页...
- 一篇3分文章的水稻转录组分析实战
- 计算机英语nic,计算机与网络英语词汇(N2)