安卓端基于邮政编码/经纬度调用Google Places API推荐会面地点方法
安卓端基于Google Places API实现会面地点推荐实操步骤
前期准备
- 首先确认你已经在Google Cloud控制台启用了Places API,并且生成了对应的安卓端API密钥,密钥需绑定你的应用包名和SHA-1签名,避免权限报错
- 你已经通过Geocode API拿到的经纬度坐标可以直接作为推荐的圆心坐标,如果是多人会面场景,可以先计算多个用户经纬度的中心点作为查询圆心,推荐结果会更符合需求
核心接口调用方案
推荐使用Places API的Nearby Search接口实现地点推荐,安卓端可以选择两种实现方式:
方式1:使用Places SDK for Android(更适配安卓原生场景,优先推荐)
- 第一步先在模块级
build.gradle中引入SDK依赖:
dependencies { implementation 'com.google.android.libraries.places:places:3.3.0' }
- 在Application或者调用页面的
onCreate方法中初始化SDK:
// 传入你在Google Cloud申请的安卓端API密钥 Places.initialize(applicationContext, "你的API_KEY") val placesClient = Places.createClient(this)
- 构造查询请求,示例为查询圆心5公里范围内适合会面的公共场所:
// 你已经拿到的经纬度坐标,此处为示例值 val centerLatLng = LatLng(39.9042, 116.4074) // 构造附近搜索请求参数 val nearbyRequest = NearbySearchRequest.builder() .setLocation(centerLatLng) .setRadius(5000) // 搜索半径,单位为米,最大支持50000 .setTypes(listOf(Place.Type.RESTAURANT, Place.Type.CAFE, Place.Type.PARK)) // 可自定义会面适配的场所类型 .setRankPreference(RankPreference.POPULARITY) // 按热度排序,也可选择RankPreference.DISTANCE按距离排序 .setMinRating(3.5) // 可过滤低评分场所,提升推荐质量 .build()
- 异步请求获取推荐结果:
placesClient.nearbySearch(nearbyRequest) .addOnSuccessListener { response -> val recommendPlaceList = response.places // 此处拿到的列表即为推荐的会面地点,可直接渲染到UI层展示 } .addOnFailureListener { exception -> // 处理请求错误,比如权限不足、配额耗尽、密钥配置错误等 }
方式2:直接调用HTTP接口(适合需要高度自定义逻辑的场景)
直接在安卓子线程中发起HTTP请求即可,请求URL格式示例:https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=纬度,经度&radius=5000&type=restaurant|cafe|park&key=你的API_KEY
返回结果为标准JSON格式,自行解析后即可获取推荐地点列表。
注意事项
- 安卓端需要提前申请
INTERNET权限,如果需要补充用户当前位置作为参数,还要申请ACCESS_FINE_LOCATION权限 - 注意Places API的调用配额限制,超出配额会返回报错,建议在Google Cloud控制台设置配额提醒
- 多人会面场景下,可以结合所有参与者的通勤距离,动态调整搜索半径和排序规则,优化推荐结果
内容的提问来源于stack exchange,提问作者Sky Lee
相关产品推荐
相关产品推荐

