0

使用Google Maps SDK,是否可以获得当前在地图上作为“图标”可见的所有 POI 的列表?

我知道我可以使用 Places API 来做类似的事情,但在我的情况下,我真的只想获得目前在用户屏幕上作为图标可见的确切 POI。

我也知道我可以在用户点击 POI 时进行监听,但这对我来说无济于事。

4

1 回答 1

0

通过 Google Maps SDK 似乎不可能,但无论如何您可以使用解决方法:

  1. 删除所有“POI 目前在地图上显示为“图标””,就像josef的这个答案一样:

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));`
  1. 获取屏幕上可见区域的坐标:

    LatLngBounds visibleAreaBounds = googleMap.getProjection().getVisibleRegion().latLngBounds;

  2. 通过适用于 Android 的 Places SDK获取有关 POI 在屏幕中心坐标附近“手动”(按种类)的信息,并解析有关每个地点的信息。

4.对于每个 POI 的坐标,检查它是否正好在边界内:

for (LatLng poiCoords : PoisCoords) {
    if (visibleAreaBounds.contains(poiCoords)) {
        // POI is visible on screen 
    }
}
于 2021-09-09T19:04:26.093 回答