获取当前在 GoogleMap 上可见的 POI(兴趣点)列表?

Posted

技术标签:

【中文标题】获取当前在 GoogleMap 上可见的 POI(兴趣点)列表?【英文标题】:Get a list of POIs (Points Of Interest) currently visible on a GoogleMap? 【发布时间】:2021-11-02 18:34:33 【问题描述】:

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

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

我也知道我可以在用户点击 POI 时进行监听,但这对我的情况没有帮助。

【问题讨论】:

【参考方案1】:

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

    像thisjosef 的回答一样,删除所有“POI 目前在地图上显示为“图标””:

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 
    

【讨论】:

以上是关于获取当前在 GoogleMap 上可见的 POI(兴趣点)列表?的主要内容,如果未能解决你的问题,请参考以下文章

GoogleMap(Android)投影可见区域在方向更改后未更新?

GoogleMap.getMyLocation() 返回 null

如何获取 iCarousel 当前可见视图?

获取对当前可见视图控制器的引用

当前位置失败 GoogleMap

使用 KissXML 和 armv7 GoogleMap