【发布时间】:2021-11-02 18:34:33
【问题描述】:
使用Google Maps SDK,是否可以获得当前在地图上作为“图标”可见的所有 POI 的列表?
我知道我可以使用 Places API 来做类似的事情,但就我而言,我真的只想获得目前在用户屏幕上作为图标可见的确切 POI。
我也知道我可以在用户点击 POI 时进行监听,但这对我的情况没有帮助。
【问题讨论】:
标签: android google-maps-android-api-2 point-of-interest
使用Google Maps SDK,是否可以获得当前在地图上作为“图标”可见的所有 POI 的列表?
我知道我可以使用 Places API 来做类似的事情,但就我而言,我真的只想获得目前在用户屏幕上作为图标可见的确切 POI。
我也知道我可以在用户点击 POI 时进行监听,但这对我的情况没有帮助。
【问题讨论】:
标签: android google-maps-android-api-2 point-of-interest
通过 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;
通过Places SDK for Android“手动”(按种类)获取有关屏幕中心坐标附近 POI 的信息,并解析有关每个地点的信息。
4.检查每个 POI 的坐标是否在边界内:
for (LatLng poiCoords : PoisCoords) {
if (visibleAreaBounds.contains(poiCoords)) {
// POI is visible on screen
}
}
【讨论】: