You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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对象做二次过滤:

  • 检查站点的nameaddress字段是否包含“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

火山引擎 最新活动