记得在2016年的时候, 有个项目需要在地图上添加Marker 并且连点成线记录坐标 和 地理围栏,  当时也是第一次做,确实有点懵, 不过时间久了, 也还挺简单的 ; 最近项目中又用到了地图 , 借此机会 , 重构下之前的逻辑 , 之前用的是高德地图 , 个人感觉还不错 ,比某度好多了, 开始coding前不妨先下载官方的Demo 看下效果 , 参考下集成文档...

好了, 今天我们一起来完成高德3D地图代码的集成 , 申请AppKey什么的 , 请自己去高德地图开放平台的控制台注册

现在高德地图集成已经支持了AndroidStudio依赖 , 不要太简单了 , 这里我集成的是3D map、定位、搜索

dependencies { implementation 'com.amap.api:3dmap:latest.integration'implementation 'com.amap.api:search:latest.integration'implementation 'com.amap.api:location:latest.integration'
}

声明权限来一波

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_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" />
<!-- 定位包、导航包需要的额外权限(注:基础权限也需要) -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

清单文件注册高德地图 APPKey在高德地图的控制台注册

<!--定位服务--><service android:name="com.amap.api.location.APSService" /><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="APPkey" />

开始撸代码 , 先来个界面初始化;

@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_map_layout);mapView = findViewById(R.id.mapView);mapView.onCreate(savedInstanceState);aMap = mapView.getMap();aMap.getUiSettings().setScaleControlsEnabled(true);// 标尺开关aMap.getUiSettings().setZoomControlsEnabled(false);//缩放按钮aMap.moveCamera(CameraUpdateFactory.zoomTo(ZOOM_MAP));aMap.setMyLocationEnabled(true);//触发定位aMap.setLocationSource(this);//设置定位资源监听(包含激活定位和销毁定位)initLocationOption();//初始化定位客户端 }

初始化定位参数: 定位方式分为三种: Hight_Accuracy(高精度)、Battery_Saving(低功耗)、Device_Sensors(仅设备)

private void initLocationOption() {AMapLocationClientOption.AMapLocationMode mode;if (Utils.isGpsOpen(this)) {mode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy;//高精度模式。Log.e(TAG, "当前定位模式为 --->>> 高精度模式");} else if (Utils.isGpsNetWorkOpen(this)) {mode = AMapLocationClientOption.AMapLocationMode.Battery_Saving;//低功耗模式。Log.e(TAG, "当前定位模式为 --->>> 低功耗模式");} else {mode = AMapLocationClientOption.AMapLocationMode.Device_Sensors;//仅限设备模式。Log.e(TAG, "当前定位模式为 --->>> 仅限设备模式");}if (mLocationOption == null) {mLocationOption = new AMapLocationClientOption().setLocationMode(mode).setNeedAddress(true)//设置是否返回地址信息(默认返回地址信息).setInterval(2000)//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。.setHttpTimeOut(8000)//单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。.setLocationCacheEnable(true);//缓存机制默认开启,可以通过以下接口进行关闭。} else {mLocationOption.setLocationMode(mode);}if (mLocationClient == null) {mLocationClient = new AMapLocationClient(getApplicationContext());//初始化定位mLocationClient.setLocationListener(this);//设置定位回调监听mLocationClient.setLocationOption(mLocationOption);} else {mLocationClient.setLocationOption(mLocationOption);}mLocationClient.startLocation();//启动定位}

激活定位

@Overridepublic void activate(OnLocationChangedListener onLocationChangedListener) {initLocationOption();mLocationListener = onLocationChangedListener;}

销毁定位 和 实现地图的生命周期管理

    @Overridepublic void deactivate() {releaseClient();}@Overrideprotected void onResume() {super.onResume();if (mapView != null) mapView.onResume();}@Overrideprotected void onPause() {super.onPause();if (mapView != null) mapView.onPause();if (mLocationClient != null) mLocationClient.stopLocation();//停止定位后,本地定位    服务并不会被销毁}private void releaseClient() {if (mLocationClient != null) {mLocationClient.stopLocation();//停止定位后,本地定位服务并不会被销毁mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务。mLocationClient = null;}}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);if (mapView != null) mapView.onSaveInstanceState(outState);}@Overrideprotected void onDestroy() {super.onDestroy();if (mapView != null) mapView.onDestroy();releaseClient();  }

定位回调,可在onLocationChanged() 拿到当前定位的坐标信息

     @Overridepublic void onLocationChanged(AMapLocation aMapLocation) {if (aMapLocation != null) {LatLng latLng;if (aMapLocation.getErrorCode() == 0) {this.aMapLocation = aMapLocation;if (mLocationClient != null) {mLocationClient.stopLocation();}mLocationListener.onLocationChanged(aMapLocation);//显示系统定位小蓝点latLng = new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude());} else {latLng = centerLatLng;//定位失败时 默认的地图中心点Toast(aMapLocation.getErrorInfo());//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。Log.e("AmapError", "location Error, ErrCode:"+ aMapLocation.getErrorCode() + ", errInfo:"+ aMapLocation.getErrorInfo());}aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));//定位回调后,将地图移动至定位点}}

最后送上预览图片

关于Android集成高德地图的那些事儿...显示地图相关推荐

  1. Bing必应地图中国API一显示地图 (转) 做人要厚道

    Bing必应地图中国API一显示地图 2011-05-24 14:27:31|  分类: Bing&Google|字号 订阅 微软必应地图中国地图API发布已经有10天了,考虑到网上现有的SD ...

  2. android mapview 自定义地图标注,关于Android集成高德地图的那些事儿...地图标注Marker 、Poi 搜索...

    上一篇博客介绍了地图的显示,不要太简单了, 我们要实现的效果当然不仅仅是显示地图这么废了, 现在地图是有了 , 怎么在地图上添加一个标注呢? 添加一个圆形?又或者是我想在地图上添加个自定义的View, ...

  3. Android集成高德Flutter地图(一)基础地图显示

    步骤一.集成Flutter环境 步骤二.创建Flutter项目,创建高德项目获取key 如何获取Sha1: 开发板: 找到自己电脑jdk的位置进入其中bin文件夹路径下,输入命令-list -v -k ...

  4. Android 集成高德地图

    需要完成效果:集成高德地图,实现定位功能,并且实时刷新位置,每25秒自动刷新位置. 布局: <?xml version="1.0" encoding="utf-8& ...

  5. Android集成高德地图

    首先下载Android地图SDK http://lbs.amap.com/api/android-sdk/down/ 然后把压缩包中的.jar文件copy至libs文件夹,鼠标移至.jar文件,右键, ...

  6. Android 集成高德地图SDK

    今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能 =-= 第一步:引入高德地图的SDK. 首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新 ...

  7. 解决百度地图API无法正常显示地图

    一.问题描述 引用了百度地图api,但是无法显示地图,报错截图如下: 二.解决方法 需要去百度地图api-控制台中,把对应ak的Referer白名单设置为通用(*)

  8. android 集成高德地图打包后报 key-location Error, ErrCode:7 的问题

    问题描述(android高德地图key鉴权失败). 工具下载地址:http://download.csdn.net/download/zhuyu19911016520/9965114 按高德官网开发文 ...

  9. Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS

    /*** 判断定位服务是否开启** @param* @return true 表示开启*/ public static boolean isLocationEnabled(Context contex ...

最新文章

  1. 5G之争,到底争些什么?
  2. HDR 拍照模式的原理,实现及应用
  3. 汇编语言数据传送示例
  4. Spring 核心价值
  5. java sqlite3查询慢_java连接数据库进行查询优化跑不通谁能帮我调下通
  6. w7怎么重启无限服务器,w7重启数据库服务器
  7. 35、JAVA_WEB开发基础之过滤器
  8. python怎么部署到tomcat_使用python将war部署到tomcat
  9. 金属,塑料,傻傻分不清楚
  10. 华文行楷字帖欣赏_著名男演员姜文,8幅精品书法作品欣赏,专家:姜文的字还未入门...
  11. STC15W408AS系列管脚说明
  12. 基于复化辛卜生求积公式的变步长求积算法
  13. 爬取小说【含完整代码】
  14. 浩辰3D与SolidWorks之间的异同
  15. IC+九旸 ,IP1810,QFP128 , 8端口10 / 100Mb + 2端口10/100 / 1000Mb交换机
  16. SU几种偏移测试 转自[蠢树]
  17. Java实现动态切换数据源
  18. Java基础编程之分解质因数
  19. Flex和Flash一起使用开发项目各取所长
  20. 进入JavaScript

热门文章

  1. App 请求校验/加密方式总结
  2. html5 调用摄像头 支持IE,JS调用本地摄像头拍照(兼容各大浏览器及IE8+)
  3. Java集合详解9:2021年的hashmap面试题怎么考?涵盖性能优化、扩容、并发问题等核心考点
  4. 计算机专业自考研究生,自考本科的学历,考研报985和211院校是不是容易被刷
  5. C语言程序设计算法题 -- lab09(1036 - 1039) 二分查找 itob 进制转换 Expands shorthand notations
  6. uboot移植之修改支持NandFlash识别篇6(超详细)
  7. 基于JAVAOA办公系统设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
  8. 国标28181:IPC信号检索设备目录查询
  9. 解决errors and 0 warnings potentially fixable with the `--fix` option.问题
  10. office2007安装找不到Office.zh-cn/OfficeLR.cab问题