对于 Android,如何在 MapBox 中将多边形之外的区域变灰?

How do I grey out an area outside of a polygon in MapBox for Android?

我目前正在使用 Android v10.3.0 的 MapBox 地图。我的应用程序是用 Kotlin 编写的。

使用 PolygonAnnotation, PolygonAnnotationManager, and PolygonAnnotationOptions 我可以在地图上绘制和着色多边形。

Example:

    // Create an instance of the Annotation API and get the polygon manager.
    val annotationApi = mapView.annotations
    val polygonAnnotationManager = annotationApi.createPolygonAnnotationManager()
    // Define a list of geographic coordinates to be connected.
    val points = listOf(
      listOf(
        Point.fromLngLat(17.94, 59.25),
        Point.fromLngLat(18.18, 59.25),
        Point.fromLngLat(18.18, 59.37),
        Point.fromLngLat(17.94, 59.37)
      )
    )
    // Set options for the resulting fill layer.
    val polygonAnnotationOptions: PolygonAnnotationOptions = PolygonAnnotationOptions()
      .withPoints(points)
      // Style the polygon that will be added to the map.
      .withFillColor("#ee4e8b")
      .withFillOpacity(0.4)
    // Add the resulting polygon to the map.
    polygonAnnotationManager.create(polygonAnnotationOptions)

Map with Polygon

我想对多边形外部的区域进行阴影处理,并使多边形内部的区域不带阴影。我该怎么做?

您可以创建一个占据整个世界的多边形并在该多边形内添加一个洞:

    val points = listOf(
        listOf(
            Point.fromLngLat(-180.0, 90.0),
            Point.fromLngLat(180.0, 90.0),
            Point.fromLngLat(180.0, -90.0),
            Point.fromLngLat(-180.0, -90.0),
            Point.fromLngLat(-180.0, 90.0)
        ),
        listOf(
            Point.fromLngLat(17.94, 59.25),
            Point.fromLngLat(18.18, 59.25),
            Point.fromLngLat(18.18, 59.37),
            Point.fromLngLat(17.94, 59.37),
            Point.fromLngLat(17.94, 59.25)
        )
    )