目录

  • 地图APP开发日志 Day 1
  • 前期准备
  • 功能
    • 地图显示
  • 注意
    • 定位失败
    • 无法显示定位蓝点
    • 手动定位

地图APP开发日志 Day 1

一个基于高德SDK个人地图项目

为什么要自己写?

  1. 不想要广告
  2. 我只需要某些功能
  3. 需要一个简介的界面

前期准备

  1. 在高德控制台申请高德地图key,选择Android平台
  2. 创建最小sdk为31的Kotlin安卓项目

    这个App可能也只会在我经常用的手机上使用,并不想对其他版本进行适配,所以sdk选择到了和手机一致

  3. 签名文件,在debug和release模式下均使用该签名文件
  4. 下载开发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相关推荐

  1. 基于百度地图sdk的地图app开发(七)——导航和模拟导航

    这是基于百度地图sdk的地图app开发系列博客第七篇 代码仓库位置:https://github.com/YanhuiLu89/lmap.git 上一篇 基于百度地图sdk的地图app开发(六)--路 ...

  2. 移动App开发日志开发实例

    简单的移动端App开发案例,持续更新... 案例是在HBuilder中开发完成的,因为能够方便的一边编写一边及时查看显示结果,而且编写完成后的打包也是简便(可以通过编写web移动app便捷的云打包为a ...

  3. Android地图定位开发技术汇总

    Android地图定位开发技术汇总 由于课程需要,我查询了一些Android中的地图定位开发技术,该技术在理论课日常练习中应用到了模拟高德地图APP开发中,同时也运用到了实验课结业大作业--小农夫AP ...

  4. Android开发日志打卡APP(二)

    Android开发日志打卡APP(二) 文章目录 Android开发日志打卡APP(二) 前言 开发过程 一.背景和标题 二.日志图标 三.日志弹框 前言 在之前的文章中,准备工作已经完成,现在我们将 ...

  5. 地图导航APP开发功能

    地图导航APP开发,地图导航APP开发功能 1.服务平台追踪定位:一部分用户方位感较弱,用户只需打开手机定位服务,APP便会即时表明用户部位信息. 2.路线规划信息:用户应用地图导航APP,则是期望能 ...

  6. Android开发日志打卡APP(一)

    Android开发日志打卡APP(一) 文章目录 Android开发日志打卡APP(一) 简介 界面展示 内容总结 1.控件 2.布局 3.技术 开发过程 准备工作 启动页面 底部导航栏 简介 ​ 初 ...

  7. ionic开发——打开百度地图APP如何传递参数,导航路线

    首先,打开百度地图APP的方法不知道朋友可以看一下这里: <ionic开发--检测是否安装某APP,如果安装打开该APP>http://blog.csdn.net/yu1731013344 ...

  8. 地图导航APP开发作用

    地图导航APP开发,地图导航APP开发作用. 近些年大家生活的节奏持续加速,很多人针对出游造成了比较大要求,但要想在日常生活中进行有关活动需搞好很多的准备工作,终究用户去到生疏地区都要提早了解好行为路 ...

  9. Android开发-基于百度地图API开发仿滴滴出行APP界面的实现

    前 言 近年来,由于移动互联网快速的发展以及基于移动设备的APP的普及,移动互联网改变了人们的生活方式.从线上的电子支付到线下的出行,移动互联网是当今社会人们生活不可或缺的一部分,而线下出行的网约车的 ...

最新文章

  1. Clojure程序设计
  2. 单链表基本操作(可执行程序),二级指针使用必要性的初步理解
  3. 【django】基础条件查询
  4. jira软件 linux 安装,JIRA使用教程:在Linux上安装JIRA
  5. 奈飞文化集:自由与责任_如何与自由客户合作:最好的合同就是您永远不必执行的合同...
  6. java如何初始化对象_java中对象的初始化过程
  7. Bailian4121 股票买卖【最值】
  8. scala json处理入门
  9. python语言只能用4个空格_python - 单词之间只保留一个空格,用replace为什么会出错...
  10. 判断请求是通过点击链接还是直接输入网址
  11. Linux网络属性配置—修改配置文件
  12. python怎么看自己安装的第三方包_安装第三方包查看python版本/第三方包版本
  13. eplan2.6安装教程
  14. 台式电脑主机前面耳机插孔没声音的解决方法
  15. 工商管理专业知识与实务(中级)【4】
  16. python重复命令_python系列的连接和重复操作
  17. 鼎立测试软件能锁网吗,路测软件鼎利通信Pioneer操作培训PPT(ET128).ppt
  18. 计算机x线平扫对人健康有影响吗,X线检查-医学影像频道-家庭医生在线 第16页...
  19. 一篇3分文章的水稻转录组分析实战
  20. 计算机英语nic,计算机与网络英语词汇(N2)

热门文章

  1. 【python数据挖掘课程】二十六.基于SnowNLP的豆瓣评论情感分析
  2. tp5的nginx配置
  3. 物联网APP开发简介
  4. 网络分流器|网络分流器|100G分流器不仅仅是带宽升级
  5. 移动端rem布局基本介绍及原理
  6. 360壁纸的任务栏广告图标 垃圾
  7. deepdive连接mysql数据库_deepdive介绍与安装
  8. 51单片机PWM控制电机
  9. CodeForces 337D Book of Evil(双向dfs)
  10. vue引用tinymce富文本编辑器及tinymce配置