使用Google PlacesApi无法获取加油站油价,求可行解决方案
获取加油站油价的替代方案
问题背景
我正尝试获取周边所有加油站的油价信息,目前使用的是PlacesApi。该接口能返回加油站的位置、地址、评分等信息,但无法返回油价数据。经查询得知地图API不提供油价相关接口,请问是否有可行的替代方案?
目前的实现代码:
List<PlaceDetails> list = new ArrayList<>(); GeocodingResult[] geocodingResults = new GeocodingResult[0]; try { geocodingResults = GeocodingApi.geocode(context,"Dallas").await(); if (geocodingResults.length > 0) { LatLng location = geocodingResults[0].geometry.location; // Perform the Places API request to get the gas stations in Dallas PlacesSearchResponse searchResponse = PlacesApi.nearbySearchQuery(context, location) .radius(20000) // Specify the search radius in meters (adjust as needed) .type(PlaceType.GAS_STATION) // Search for gas stations .await(); // Iterate through the results and print the gas station names for (PlacesSearchResult result : searchResponse.results) { PlaceDetails placeDetails = PlacesApi.placeDetails(context, result.placeId).awaitIgnoreError(); list.add(placeDetails); System.out.println(result.name); } } else { System.out.println("Unable to geocode Dallas."); } } catch (Exception e) { throw new RuntimeException(e); }
其中placeDetails对象包含了除油价外的所有信息。
可行替代方案
1. 集成第三方油价数据API
先用Places API获取加油站的经纬度、名称、地址等核心标识信息,再将这些信息传入专注于油价数据的第三方API,匹配获取实时或近期的油价数据,最后把油价和原有的placeDetails数据关联起来。这类服务大多需要申请API密钥,部分有调用限制或付费要求,选择时要关注数据覆盖范围和更新频率。
2. 本地数据采集与维护(适合小众场景)
如果第三方API无法满足需求,或仅需覆盖特定区域,可以定期手动采集目标区域加油站的油价并存储到本地数据库,通过Places API获取加油站信息后,从本地数据库匹配对应油价,定时更新数据库保证时效性。这种方式适合小范围、低频次场景,但需要人力维护数据。
3. 利用用户提交数据(UGC模式)
若产品有用户基础,可添加油价提交功能让用户输入当前加油站的油价,将提交的数据存储到服务器,经审核后对外提供查询,结合Places API的信息展示用户贡献的油价,同时定期清洗数据剔除无效或过时信息。这种方式能降低数据获取成本,但需建立审核机制保证准确性。
内容的提问来源于stack exchange,提问作者bluelurker
相关产品推荐
相关产品推荐

