Day 25:获取位置经纬度

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 UdemyYoutube 频道。另外,想追踪更多相关技术资讯,欢迎到 脸书粉丝专页 按赞追踪喔~

程序码范例

范例名称:获取位置经纬度
开发人员:HKT (侯光灿)
程序语言:Kotlin
开发环境:Android Studio 4.1.2 & Android 11 & Kotlin 1.4.30
授权范围:使用时必须注明出处且不得为商业目的之使用
范例下载点:点我下载

今天要来跟大家介绍的是,如何使用新式 Fused Location Provider API 来获取经纬度座标位置。而 Fused Location Provider API 与旧式 LocationManager 相比,Google 官方声称,使用上更简单,让装置更省电且可以在更精准的情况下,定位出当下位置。

最後介绍如何透过网页版的 Google Map 来验证,我们获取出来的座标位置是否正确。

添加 Fused Location Provider API 依赖库 (dependencies)

在 GRADLE (Module) 层级 dependencies 内加入:

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

在获取到位置权限与确认GPS已开启後,加入获取经纬度方法

private fun getDeviceLocation() {
    try {
        if (locationPermissionGranted
        ) {
            val locationRequest = LocationRequest()
            locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
            //更新频率
            locationRequest.interval = 1000
            //更新次数,若没设定,会持续更新
            //locationRequest.numUpdates = 1
            mLocationProviderClient.requestLocationUpdates(
                locationRequest,
                object : LocationCallback() {
                    override fun onLocationResult(locationResult: LocationResult?) {
                        locationResult ?: return
                        Log.d(
                            "HKT",
                            "纬度:${locationResult.lastLocation.latitude} , 经度:${locationResult.lastLocation.longitude} "
                        )
                    }
                },
                null
            )

        } else {
            getLocationPermission()
        }
    } catch (e: SecurityException) {
        Log.e("Exception: %s", e.message, e)
    }
}

输出结果

D/HKT: 纬度:25.0338483 , 经度:121.5645283 
D/HKT: 纬度:25.0338483 , 经度:121.5645283 
D/HKT: 纬度:25.0338483 , 经度:121.5645283 

Google Map 网页版,验证座标位置

线上 Google Map 网页验证位置,需在搜寻栏位中输入「纬度, 经度」,如「25.0338483, 121.5645283」。

输出结果

透过这样的方式,在搜寻栏位中,输入我们从装置中获取出来的座标位置,即可以验证我们的座标位置是否正确。

参考资料

HKT 线上教室
https://tw-hkt.blogspot.com/

Freepik
https://www.freepik.com/


那今天【iThome 铁人赛】就介绍到这边罗~

顺带一提,KT 线上教室,脸书粉丝团,会不定期发布相关资讯,不想错过最新资讯,不要忘记来按赞,追踪喔!也欢迎大家将这篇文章分享给更多人喔。

我们明天再见罗!!!掰掰~


<<:  Day 25 - Watch os 开发学习2(Button)

>>:  Dungeon Mizarka 013

[很不铁人的 IT 铁人赛] 前端工程师学资讯安全

(图片来自 Google for Education) 2021 铁人赛又开赛啦 ! 继 2019...

# Day12--我们用协定说好要这样做了,你一定得OK!

协定的语法其实算是大量的使用在结构与类别中,尤其需要更底层的作用的时候,协定算是提供了一个共识,让程...

Day 26 [其他04] ES6的Symbol竟然那么强大,面试中的加分点啊

文章选自 作者:xiaohesong 连接:https://juejin.im/post/68449...

Day 22 透过程序快速布署云上资源

过往在进行云端部署时,有时候需要复制出多套一样的基础架构,例如包含VPC、VM、LoadBalan...

Day12不可以坏坏!vue.js判断是否session

延续昨日 今天来使用一下我们的session吧!! 在mounted的范围接一下 session 这...