您可以将 Places 服务和 Geocoding API 与 Maps SDK for Android 搭配使用,以搜索区域并获取有关地点的更多信息。Places 服务和 Geocoding API 是强大且稳定的替代方案,可以用来获取地点 ID。如果您已经在使用地点 ID,就可以重复使用这些 ID 来设置边界的数据驱动型样式。
将地点服务和地理编码服务添加到 您可以通过以下方式使用 Maps SDK for Android 应用:
- Places SDK for Android 是一个 Android 库,其中包含用于返回地点相关信息的方法。
- Places API 可通过 HTTP 请求来返回有关地点的信息。
- Geocoder 类 可以根据用户输入动态地进行地理编码和反向地理编码。
- Geocoding API 可用于对静态的已知地址进行地理编码。
使用地点服务
使用新版文本搜索功能查找地点 ID
您可以在 Places API 中使用 Text Search (New) REST API,通过在字段掩码中指定 places.id
来获取包含区域数据的地点 ID。使用
通过文本搜索(新)请求地点 ID 仅会引发
。了解详情。
例如,如需获取加利福尼亚州特立尼达市的地点 ID,您可以执行以下 API 调用:
curl -X POST -d '{ "textQuery" : "Trinidad, CA" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.id' \ 'https://places.googleapis.com/v1/places:searchText'
使用地点自动补全功能查找区域
地点自动补全功能
服务提供了一种便捷的方式,
用户搜索区域如需将地点自动补全服务配置为仅返回区域,请使用 AutocompleteSupportFragment.setTypesFilter(List)
将类型过滤器设置为 PlaceTypes.REGIONS
。
获取某个区域的地点详情
Places SDK for Android 中的地点详情服务会返回区域数据,这些数据非常有用。例如,您可以:
- 根据地点名称搜索边界地点 ID。
- 获取视口以缩放至相应边界。
- 获取边界的地图项类型(例如
locality
)。 - 获取采用特定格式的地址,该地址将解析为“地点名称, 省/自治区/直辖市, 国家/地区”在 美国区域(例如“奥塔姆瓦, IA, USA”)。
- 获取照片等其他实用数据。
使用 Geocoding API
Geocoding API 可让您将 将地址转换为经纬度坐标以及地点 ID,或者将地址转换为 纬度和经度坐标或地点 ID 传递到地址中。在设置边界的数据驱动型样式时,您还可以搭配采用以下措施:
- 使用地理编码服务获取某个区域的视口。
- 在地理编码调用中应用组成部分过滤,以获取 1 至 4 级行政区、市行政区或邮政编码对应的地点 ID。
- 使用反向地理编码按经纬度坐标查找地点 ID,甚至返回特定位置的所有组成部分的地点 ID。
以下示例使用地址(经过网址转义)向 Geocoding API 发出请求:
https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Pkwy%20Mountain%20View%20CA&key=YOUR_API_KEY
您可以使用反向地理编码查找地点 ID。下例中的地理编码服务函数会返回指定纬度和经度坐标处所有地址组成部分的地点 ID:
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&key=YOUR_API_KEY
将反向地理编码与组成部分过滤结合使用,以获取指定位置处以下一种或多种类型的地址组成部分:
administrativeArea
country
locality
postalCode
下例中的函数说明了如何使用地理编码服务,通过反向地理编码添加组成部分限制,从而获取指定位置处仅限 locality
类型的所有地址组成部分:
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&result_type=locality&key=YOUR_API_KEY