Как сделать область за пределами полигона серой в MapBox для Android?

В настоящее время я использую карты MapBox для Android v10.3.0. Мое приложение написано на Котлине.

Используя МногоугольникАннотация, PolygonAnnotationManager и PolygonAnnotationOptions, я могу нарисовать и заштриховать многоугольник на карте.

Пример:

    // 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)

Карта с многоугольником

Я хотел бы заштриховать область вне полигона и иметь площадь внутри полигона без заливки. Как мне это сделать?

0
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать многоугольник, занимающий весь мир, и добавить дыру внутри этого многоугольника:

    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)
        )
    )

Спасибо. Это очень полезная тактика.

LordDarkHelmet 24.03.2022 04:03

Другие вопросы по теме