使用Google Maps SDK,是否可以获得当前在地图上作为“图标”可见的所有 POI 的列表?
我知道我可以使用 Places API 来做类似的事情,但在我的情况下,我真的只想获得目前在用户屏幕上作为图标可见的确切 POI。
我也知道我可以在用户点击 POI 时进行监听,但这对我来说无济于事。
使用Google Maps SDK,是否可以获得当前在地图上作为“图标”可见的所有 POI 的列表?
我知道我可以使用 Places API 来做类似的事情,但在我的情况下,我真的只想获得目前在用户屏幕上作为图标可见的确切 POI。
我也知道我可以在用户点击 POI 时进行监听,但这对我来说无济于事。
通过 Google Maps SDK 似乎不可能,但无论如何您可以使用解决方法:
a) 像这样创建 JSON 文件 src\main\res\raw\map_style.json:
[
{
featureType: "poi",
elementType: "labels",
stylers: [
{
visibility: "off"
}
]
}
]
b) 将地图样式添加到您的 GoogleMap:
`googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));`
获取屏幕上可见区域的坐标:
LatLngBounds visibleAreaBounds = googleMap.getProjection().getVisibleRegion().latLngBounds;
通过适用于 Android 的 Places SDK获取有关 POI 在屏幕中心坐标附近“手动”(按种类)的信息,并解析有关每个地点的信息。
4.对于每个 POI 的坐标,检查它是否正好在边界内:
for (LatLng poiCoords : PoisCoords) {
if (visibleAreaBounds.contains(poiCoords)) {
// POI is visible on screen
}
}