在项目中添加谷歌地图

集成前的准备工作,可看上一篇博客Android 集成google地图 准备工作
在app build.gradle中添加下面的sdk,记得启用api

implementation 'com.google.android.gms:play-services-maps:17.0.1'
implementation 'com.google.maps.android:android-maps-utils:2.2.0'

在需要显示地图的地方,在布局中添加如下代码

<fragmentandroid:id="@+id/mapview"class="com.google.android.gms.maps.SupportMapFragment"android:layout_width="match_parent"android:layout_height="match_parent"/>

这样就可以显示出google地图来了,不过效果是这样

现在添加个定位,并显示到当前定位来.
在app build.gradle中添加,记得启用这个api

implementation 'com.google.android.gms:play-services-location:15.0.1'

在AndroidManifest.xm中添加如下权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

在activityd的onCreate()中添加如下代码

val mapFragment: SupportMapFragment = supportFragmentManager.findFragmentById(R.id.mapview) as SupportMapFragment
mapFragment.getMapAsync(this)
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)

实现onMapReady()

override fun onMapReady(p0: GoogleMap) {mGoogleMap = p0getDeviceLocation()
}

实现获取定位,并移动地图。需要先动态获取定位权限

var locationCallback: LocationCallback? = null
@SuppressLint("MissingPermission")
private fun getDeviceLocation() {try {val locationRequest = LocationRequest().apply {interval = 5000fastestInterval = 5000priority = LocationRequest.PRIORITY_HIGH_ACCURACY}ocationCallback = object: LocationCallback() {override fun onLocationResult(p0: LocationResult?) {if (p0 != null ){//获取到当前位置,将地图移至定位处并将地图放大14倍mGoogleMap?.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(p0.lastLocation.latitude, p0.lastLocation.longitude),14f))mGoogleMap?.uiSettings?.isMyLocationButtonEnabled = false//移除callBack,不然还会继续获取定位fusedLocationProviderClient?.removeLocationUpdates(locationCallback)val bitmap = BitmapFactory.decodeResource(this@GoogleMapDemoActivity.resources,R.drawable.icon_current_location)//清空之前添加的标记mGoogleMap?.clear()//添加当前位置的标记mGoogleMap?.addMarker(MarkerOptions().position(LatLng(lat, lng)).icon(BitmapDescriptorFactory.fromBitmap(bitmap)))}   }override fun onLocationAvailability(p0: LocationAvailability?) {//当前定位不可用if (p0?.isLocationAvailable != true){}fusedLocationProviderClient?.removeLocationUpdates(locationCallback)}}fusedLocationProviderClient?.requestLocationUpdates(locationRequest,locationCallback,Looper.myLooper())}catch (e: Exception){}
}

运行效果如下

使用Geocoder反向地理编码

private fun latlngToAddress(lat: Double,lng: Double){val geocoder = Geocoder(this)try {val result = geocoder.getFromLocation(lat,lng,1)if (result != null && result.isNotEmpty()){val addressName = result[0].featureName}}catch (e: Exception){}
}

Android 集成google地图相关推荐

  1. android百度导航实现,Android 集成百度地图实现设备定位

    Android 集成百度地图实现设备定位 步骤1: 申请android 端SDK : http://lbsyun.baidu.com/ 步骤2: 下载基础版SDK 步骤3: 下载示例程序 步骤4: 开 ...

  2. Android 集成百度地图之申请TTS授权最新版

    Android 集成百度地图之申请TTS授权最新版. 前提:登录百度地图开放平台,且已创建好应用. 开发文档-Android 导航SDK-TTS授权申请. 这里有个坑,简单说下,进入http://yu ...

  3. Android 集成google map,Markers ,定位,聚合

    集成谷歌地图 前期准备 1.注册谷歌账号,然后再开发者平台登录 开发者平台传送门(需翻墙) 谷歌地图的文档 2.进入控制台,新建项目 3.此时成功创建项目,接下来是添加API,因为谷歌将谷歌地图的功能 ...

  4. Android 集成 google 登录并获取 性别等隐私信息

    前言 公司做海外产品的,集成的是 google 账号登录,账号信息.邮箱等这些不涉及隐私的按 google 的正常登录流程可以轻松实现 .但是一旦需要获取涉及隐私的信息就比较麻烦,文档也不是十分清晰, ...

  5. Android的Google地图开发

    编写这个程序之前需要有一个Google 地图 扩展库在SDK中,一般来说,android 1.5中就已经有了.如果没有的话可以在这里下载: http://code.google.com/android ...

  6. 项目记录——为沙特客户Android开发Google地图应用

    最近在给沙特客户所做的应用中需要用到地图,所以原来常用的百度地图就不能使用了,只好换成了Google地图.结果在开发过程中遇到了很多坑,折腾了不少时间终于搞定.这里特记录下之中的几个要点,让同学们有个 ...

  7. Android 集成百度地图AR识别SDK(二)

    废话 今天我们开始集成百度地图AR识别SDK(后面简称AR SDK)的第二章,这一章我们主要讲Android Studio如何配置AR SDK 我们如果单单只看文档的话,很难看懂如何集成,我们需要结合 ...

  8. Android 集成google 和 facebook 登录

    最近公司项目刚好集成了google 和 facebook 登录,中间遇到了一些问题,所以记录下来. 主要问题如下: 1)如何集成google 和 facebook 登录,主要参考官方文档. 2)应用上 ...

  9. Android 集成高德地图

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

  10. android开发google地图

    最近学习android的开发,在学习google地图开发的时候遇见一些问题,在此特地记录一下开发学习的步骤,也希望能帮助和我一样遇见问题的朋友.因为市面上的很多学习视频和博客 文章对这个的介绍很多都是 ...

最新文章

  1. 趋势畅想-搭载android系统的智能数码相机
  2. C/C++之Gcc常用参数
  3. 由动态分配和静态分配的数据在内存组成区别
  4. 开车走吗?朋友......
  5. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)
  6. 协同过滤推荐算法-----向量之间的相似度
  7. 【HTML超浪漫的表白网页代码】不会编程也能制作送给女朋友的表白网站
  8. BeyondCompare4破解最佳实践
  9. Vivado时钟之间的三种关系
  10. P1116 车厢重组
  11. 康考迪亚计算机科学需要gre吗,康考迪亚大学研究生院化学工具专业录取条件
  12. photoshop 裁剪_如何在Photoshop中裁剪图像
  13. 《iOS防护02》破解ptrace防护
  14. 高速数字电路AC耦合电容HFSS仿真
  15. C 宇恒棋 大力猜想 神奇数学
  16. 制作适应手机网页、平板电脑(iPad)、电脑网页的三种方法
  17. c语言实现词法分析器+文法分析器(全代码)
  18. AI为职业病做了啥贡献,了解一下
  19. 会计 复式记账 财务会计 系统设计 数据库建模(待翻译)
  20. python 脚本退出

热门文章

  1. python opencv双目测距_使用OpenCV/python进行双目测距
  2. 解决VirtualBox无法安装增强工具
  3. PDF编辑技巧2:删除页面和添加页面
  4. 如何提高思考能力,(一个绝对能帮到你的科普)取自《思维混乱:是因为大脑没有结构》谢春霖
  5. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (6) Spectrum Encode 模块
  6. 购买计算机相关配件的会计分录,购买电脑配件自己组装电脑怎么写会计分录
  7. 安得一颗光明心——《王阳明大传》的读后感作文4100字
  8. java使用poi制作的ppt被损坏_poi操作ppt创建表格,结果却是这样?
  9. 在IT呆了好久了,给大家科普下这个行业的行话
  10. 记一次外接键盘win键失灵