Android端Google Places API仅获取CNG加气站的方法咨询
嘿,针对你在Android Nearby Places API里只想获取CNG加气站的需求,我整理了实用的解决方案,一起来看:
Google Places API筛选CNG加气站的实现方案
1. 官方类型的限制说明
首先得明确:Google Places API(包括Android端的Nearby Places模块)没有单独的CNG加气站专属类型,也不存在专门的CNG站点子ID。gas_station这个预定义类型确实会同时包含普通加油站和CNG加气站,而且官方的预定义类型是固定的,不支持自定义修改。
2. 可行的筛选方法
虽然没有专属类型,但我们可以通过两种方式来精准定位CNG加气站:
方式一:API请求时结合关键词过滤
在调用Nearby Places API时,除了指定类型为gas_station,额外添加keyword参数,传入“CNG”、“压缩天然气”这类关键词,让API直接返回包含这些关键词的站点。举个Kotlin代码示例:
val placesClient = Places.createClient(context) // 构造附近搜索请求 val nearbySearchRequest = NearbySearchRequest.builder() .setLocation(LatLng(你的纬度, 你的经度)) .setRadius(5000) // 搜索半径,单位米 .setType(Place.Type.GAS_STATION) .setKeyword("CNG") // 核心筛选关键词 .build() // 发起请求并处理结果 placesClient.searchNearby(nearbySearchRequest).addOnSuccessListener { response -> // 这里返回的结果就是包含CNG关键词的加气站 }
这种方式能直接过滤掉大部分普通加油站,但要注意:部分地区的CNG站点可能没标注关键词,会有少量遗漏。
方式二:获取结果后本地二次筛选
先调用API拿到所有gas_station类型的站点,再在本地对返回的Place对象做二次过滤:
- 检查站点的
name或address字段是否包含“CNG”、“加气站”等关键词; - 部分商家会在站点的
types字段添加自定义标签(虽然官方没定义CNG专属类型),也可以检查这类标识。
示例代码(Kotlin):
placesClient.findCurrentPlace(FindCurrentPlaceRequest.newInstance(listOf(Place.Field.NAME, Place.Field.ADDRESS))).addOnSuccessListener { response -> val cngStations = response.placeLikelihoods.filter { placeLikelihood -> val place = placeLikelihood.place // 根据关键词筛选 place.name?.contains("CNG", ignoreCase = true) == true || place.address?.contains("加气站", ignoreCase = true) == true } // 处理筛选后的CNG加气站列表 }
3. 额外优化提示
如果你的目标区域是国内,可以结合“压缩天然气加气站”这类更本地化的关键词来优化筛选逻辑,提升准确率。要是你觉得这个需求很普遍,也可以给Google提交反馈,建议添加CNG专属站点类型,不过这个过程周期会比较长。
内容的提问来源于stack exchange,提问作者Utkarsh Kataria




