Формы

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Выберите платформу: Android iOS JavaScript

Карта со сплошной красной ломаной линией

Google Maps API для Android предлагает несколько простых способов добавления фигур на карты, чтобы настроить их для своего приложения.

  • Polyline — это набор соединенных сегментов линии, которые могут образовывать любую форму, которую вы хотите, и могут использоваться для обозначения путей и маршрутов на карте.
  • Polygon — это замкнутая форма, которую можно использовать для обозначения областей на карте.
  • Circle — это географически точная проекция круга на поверхность Земли, нарисованная на карте.

Внешний вид всех этих фигур можно настроить, изменив ряд свойств.

Примеры кода

Учебное пособие по добавлению полигонов и полилиний для представления областей и маршрутов включает в себя весь код простого приложения для Android.

Кроме того, репозиторий ApiDemos на GitHub включает примеры, демонстрирующие использование фигур и их функций:

  • CircleDemoActivity ( Java / Kotlin ): Круг
  • PolygonDemoActivity ( Java / Kotlin ): многоугольник
  • PolylineDemoActivity ( Java / Kotlin ): полилиния

Полилинии

Класс Polyline определяет набор соединенных сегментов линий на карте. Объект Polyline состоит из набора LatLng и создает ряд сегментов линии, которые соединяют эти местоположения в упорядоченной последовательности.

В этом видео представлены идеи о том, как помочь вашим пользователям добраться туда, куда они идут, используя полилинии для рисования пути на карте.

Чтобы создать полилинию, сначала создайте объект PolylineOptions и добавьте к нему точки. Точки представляют точки на поверхности земли и выражаются как объект LatLng . Сегменты линий рисуются между точками в соответствии с порядком их добавления в объект PolylineOptions .

Чтобы добавить точки к объекту PolylineOptions , вызовите PolylineOptions.add() . Обратите внимание, что этот метод принимает переменное количество параметров, поэтому вы можете добавлять несколько точек одновременно (вы также можете вызвать PolylineOptions.addAll(Iterable<LatLng>) , если точки уже находятся в списке).

Затем вы можете добавить полилинию на карту, вызвав GoogleMap.addPolyline(PolylineOptions) . Метод возвращает объект Polyline , с помощью которого вы можете изменить полилинию позднее.

В следующем фрагменте кода показано, как добавить прямоугольник на карту:

Ява


// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

Котлин


// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

Прямоугольник появляется на карте, как показано ниже:

Карта с прямоугольной ломаной

Чтобы изменить форму полилинии после ее добавления, вы можете вызвать Polyline.setPoints() и указать новый список точек для полилинии.

Вы можете настроить внешний вид полилинии как до ее добавления на карту, так и после ее добавления на карту. Более подробную информацию см. в разделе о настройке внешнего вида ниже.

Настройка полилинии

Существует несколько способов настройки внешнего вида полилиний:

  • Разноцветные полилинии задают сегментам полилиний разные цвета.
  • Градиентные полилинии окрашивают полилинию, используя градиент двух цветов.
  • Штампованные полилинии стилизуют полилинию, используя повторяющиеся растровые изображения.

Чтобы использовать настройки полилинии, необходимо использовать SDK Maps SDK для Android версии 18.1.0 или более позднюю и последнюю версию средства визуализации Maps SDK для Android .

Создание многоцветной полилинии

Карта с разноцветной полилинией

Вы можете использовать диапазоны для индивидуального окрашивания сегментов полилинии, создавая объекты StyleSpan и добавляя их в PolylineOptions с помощью addSpan() или addSpans() . По умолчанию каждый элемент массива задает цвет соответствующего сегмента линии. В следующем примере показано задание цветов сегментов для создания полилинии с красными и зелеными сегментами:

Ява


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

Котлин


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

Создание полилинии градиента

Карта с градиентной ломаной

Вы можете определить градиент, указав два 32-битных целых числа альфа-красный-зеленый-синий (ARGB), чтобы указать начальный и конечный цвета штриха. Установите это свойство в объекте параметров фигуры, вызвав PolylineOptions.addSpan() . В следующем примере показано создание полилинии с градиентом от красного к желтому от зоопарка Вудленд-Парк до Киркленда, штат Вашингтон.

Ява


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

Котлин


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

Создание штампованной полилинии

Карта со штампованной ломаной

Вы можете настроить внешний вид полилинии на повторяющуюся растровую текстуру. Для этого создайте StampStyle из TextureStyle , затем установите это свойство в объекте параметров фигуры, вызвав PolylineOptions.addSpan() , как показано здесь:

Ява


StampStyle stampStyle =
        TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build();
StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(span));

      

Котлин


val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span)
)

      

Полилинейные события

По умолчанию полилинии не кликабельны. Вы можете включать и отключать кликабельность, вызывая Polyline.setClickable(boolean) .

Используйте OnPolylineClickListener для прослушивания событий щелчка на полилинии, на которую можно щелкнуть. Чтобы установить этот прослушиватель на карту, вызовите GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) . Когда пользователь щелкает полилинию, вы получите обратный вызов onPolylineClick(Polyline) .

Полигоны

Объекты- Polygon похожи на объекты- Polyline тем, что состоят из ряда координат в упорядоченной последовательности. Однако вместо того, чтобы быть открытыми, полигоны предназначены для определения областей внутри замкнутого цикла с заполненной внутренней частью.

Вы можете добавить Polygon на карту так же, как вы добавляете Polyline . Сначала создайте объект PolygonOptions и добавьте к нему несколько точек. Эти точки будут формировать контур многоугольника. Затем вы добавляете полигон на карту, вызывая GoogleMap.addPolygon(PolygonOptions) , который возвращает объект Polygon .

Следующий фрагмент кода добавляет на карту прямоугольник.

Ява


// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions = new PolygonOptions()
    .add(new LatLng(37.35, -122.0),
        new LatLng(37.45, -122.0),
        new LatLng(37.45, -122.2),
        new LatLng(37.35, -122.2),
        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

Котлин


// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0)
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

Чтобы изменить форму многоугольника после его добавления, вы можете вызвать Polygon.setPoints() и указать новый список точек для контура многоугольника.

Вы можете настроить внешний вид полигона как до его добавления на карту, так и после его добавления на карту. Более подробную информацию см. в разделе о настройке внешнего вида ниже.

Автозаполнение полигона

Многоугольник в приведенном выше примере состоит из пяти координат, но обратите внимание, что первая и последняя координаты — это одно и то же место, определяющее петлю. Однако на практике, поскольку полигоны определяют замкнутые области, вам не нужно определять эту последнюю координату. Если последняя координата отличается от первой, API автоматически «закроет» полигон, добавив первую координату в конец последовательности координат.

Следующие два многоугольника эквивалентны, и вызов polygon.getPoints() для каждого из них вернет все 4 точки.

Ява


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

Котлин


val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

Создать полый многоугольник

Несколько путей можно комбинировать в одном объекте Polygon для создания сложных форм, таких как заполненные кольца или «пончики» (где многоугольные области отображаются внутри многоугольника как «острова»). Сложные формы всегда состоят из нескольких более простых путей.

Два пути должны быть определены в одной и той же области. Большая из двух областей определяет область заливки и представляет собой простой многоугольник без дополнительных параметров. Затем передайте второй путь addHole() . Когда второй, меньший путь полностью окружен большим путем, будет казаться, что часть многоугольника была удалена. Если отверстие пересекает контур многоугольника, многоугольник будет отображаться без какой-либо заливки.

Приведенный ниже фрагмент создаст один прямоугольник с меньшим прямоугольным отверстием.

Ява


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

Котлин


val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

Полый многоугольник появляется на карте, как показано ниже:

Карта с полой прямоугольной ломаной

Полигональные события

По умолчанию полигоны не кликабельны. Вы можете включать и отключать кликабельность, вызывая Polygon.setClickable(boolean) .

Используйте OnPolygonClickListener для прослушивания событий кликов на кликабельном многоугольнике. Чтобы установить этот прослушиватель на карте, вызовите GoogleMap.setOnPolygonClickListener(OnPolygonClickListener) . Когда пользователь нажимает на многоугольник, вы получите обратный вызов onPolygonClick(Polygon) .

Круги

Карта с кругом

В дополнение к общему классу Polygon Maps API также включает специальные классы для объектов Circle , чтобы упростить их создание.

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

  • center как LatLng .
  • radius в метрах.

Затем круг определяется как множество всех точек на поверхности Земли, которые находятся в radius метров от данного center . Из-за того, как проекция Меркатора, используемая Maps API, отображает сферу на плоской поверхности, она будет выглядеть как почти идеальный круг на карте, когда расположена вблизи экватора, и будет казаться все более некруглой (на экране) по мере того, как круг удаляется от экватора.

Чтобы изменить форму круга после его добавления, вы можете вызвать Circle.setRadius() или Circle.setCenter() и указать новые значения.

Вы можете настроить внешний вид круга как до его добавления на карту, так и после его добавления на карту. Более подробную информацию см. в разделе о настройке внешнего вида ниже.

Следующий фрагмент кода добавляет круг на карту, создавая объект CircleOptions и вызывая GoogleMap.addCircle(CircleOptions) :

Ява


// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

Котлин


// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

События круга

По умолчанию круги не кликабельны. Вы можете включить или отключить кликабельность, вызвав GoogleMap.addCircle() с CircleOptions.clickable(boolean) или вызвав Circle.setClickable(boolean) .

Используйте OnCircleClickListener для прослушивания событий щелчка по кликабельному кругу. Чтобы установить этот прослушиватель на карте, вызовите GoogleMap.setOnCircleClickListener(OnCircleClickListener) .

Когда пользователь нажимает на кружок, вы получаете обратный вызов onCircleClick(Circle) , как показано в следующем примере кода:

Ява


Circle circle = map.addCircle(new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)
    .strokeWidth(10)
    .strokeColor(Color.GREEN)
    .fillColor(Color.argb(128, 255, 0, 0))
    .clickable(true));

map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() {
    @Override
    public void onCircleClick(Circle circle) {
        // Flip the r, g and b components of the circle's stroke color.
        int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
        circle.setStrokeColor(strokeColor);
    }
});

      

Котлин


val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true)
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

Настройка внешнего вида

Вы можете изменить внешний вид фигуры как до того, как она будет добавлена ​​на карту (указав нужное свойство в объекте опций), так и после того, как она была добавлена ​​на карту. Геттеры также доступны для всех свойств, так что вы можете легко получить доступ к текущему состоянию формы.

Следующий фрагмент добавляет толстую синюю полилинию с геодезическими сегментами от Мельбурна до Перта. В следующих разделах эти свойства объясняются более подробно.

Ява


Polyline polyline = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

      

Котлин


val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true)
)

      

Карта выглядит так, как показано ниже:

Карта с ломаной линией от Мельбурна до Перта

Примечание. Хотя большинство из них можно применить к любой из описанных фигур, некоторые свойства могут не иметь смысла для определенных фигур (например, полилиния не может иметь цвет заливки, поскольку у нее нет внутренней части).

Цвет обводки

Цвет обводки — это 32-разрядное целое число альфа-красный-зелено-синий (ARGB), указывающее непрозрачность и цвет обводки фигуры. Установите это свойство в объекте параметров фигуры, вызвав *Options.strokeColor() (или PolylineOptions.color() в случае полилинии). Если не указано, цвет обводки по умолчанию — черный ( Color.BLACK ).

После того, как фигура была добавлена ​​на карту, цвет обводки можно получить, вызвав getStrokeColor() (или getColor() для полилинии), и его можно изменить, вызвав setStrokeColor() ( setColor() for a polyline ).

Цвет заливки

Цвет заливки применяется только к многоугольникам и кругам. Это не относится к полилиниям, поскольку они не имеют определенных внутренних частей. Для многоугольника области внутри его отверстий не являются частью внутренней части многоугольника и не будут окрашены, если задан цвет заливки.

Цвет заливки — это 32-разрядное целое число альфа-красный-зеленый-синий (ARGB), указывающее непрозрачность и цвет внутренней части фигуры. Установите это свойство в объекте параметров фигуры, вызвав *Options.fillColor() . Если не указано, цвет обводки по умолчанию прозрачный ( Color.TRANSPARENT ).

После того, как фигура была добавлена ​​на карту, цвет заливки можно получить, вызвав getFillColor() , и его можно изменить, вызвав setFillColor() .

Ширина хода

Ширина штриха линии в виде числа с плавающей запятой в пикселях (px). Ширина не изменяется при масштабировании карты (т. е. фигура будет иметь одинаковую ширину обводки на всех уровнях масштабирования). Установите это свойство в объекте параметров фигуры, вызвав *Options.strokeWidth() (или PolylineOptions.width() для полилинии). Если не указано, обводка по умолчанию равна 10 пикселям.

После того, как фигура добавлена ​​на карту, можно получить доступ к ширине обводки, вызвав getStrokeWidth() (или getWidth() для полилинии), и изменить ее, вызвав setStrokeWidth() ( setWidth() for a polyline ).

Образец инсульта

Образец обводки по умолчанию представляет собой сплошную линию для полилиний и контуров многоугольников и окружностей. Вы можете указать пользовательский шаблон обводки объектов PatternItem , где каждый элемент представляет собой тире, точку или пробел.

В следующем примере шаблон для полилинии задается повторяющейся последовательностью точек, за которыми следует промежуток длиной 20 пикселей, штрих длиной 30 пикселей и еще один интервал в 20 пикселей.

Ява


List<PatternItem> pattern = Arrays.asList(
    new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

Котлин


val pattern = listOf(
    Dot(), Gap(20F), Dash(30F), Gap(20F)
)
polyline.pattern = pattern

      

Шаблон повторяется вдоль линии, начиная с первого элемента шаблона в первой вершине, указанной для фигуры.

Типы суставов

Для полилиний и контуров многоугольников можно указать тип соединения с фаской или JointType чтобы заменить фиксированный тип соединения под углом по умолчанию.

В следующем примере к полилинии применяется тип круглого соединения:

Ява


polyline.setJointType(JointType.ROUND);

      

Котлин


polyline.jointType = JointType.ROUND

      

Тип соединения влияет на внутренние изгибы линии. Если линия имеет рисунок обводки, включающий штрихи, тип соединения также применяется, когда штрих пересекает соединение. Типы соединений не влияют на точки, так как они всегда круглые.

Ограничения строк

Вы можете указать стиль Cap для каждого конца полилинии. Возможные варианты: «встык» (по умолчанию), «квадрат», «круглый» или пользовательское растровое изображение. Установите стиль в PolylineOptions.startCap и PolylineOptions.endCap или используйте соответствующие методы получения и установки.

В следующем фрагменте задается закругленный конец в начале полилинии.

Ява


polyline.setStartCap(new RoundCap());

      

Котлин


polyline.startCap = RoundCap()

      

В следующем фрагменте кода указывается пользовательское растровое изображение для заглушки:

Ява


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

Котлин


polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

При использовании пользовательского растрового изображения необходимо указать ширину обводки в пикселях. API соответствующим образом масштабирует растровое изображение. Эталонная ширина обводки — это ширина обводки, которую вы использовали при разработке растрового изображения для кепки при исходном размере изображения. Стандартная ширина обводки по умолчанию составляет 10 пикселей. Подсказка: Чтобы определить опорную ширину обводки, откройте растровое изображение с масштабом 100 % в графическом редакторе и нанесите требуемую ширину обводки линии относительно изображения.

Если вы используете BitmapDescriptorFactory.fromResource() для создания растрового изображения, убедитесь, что вы используете независимый от плотности ресурс ( nodpi ).

Геодезические сегменты

Геодезическая настройка применяется только к полилиниям и полигонам. Это не относится к кругам, поскольку они не определены как набор сегментов.

Параметр геодезических определяет способ рисования сегментов линии между последовательными вершинами полилинии/многоугольника. Геодезические сегменты — это те, которые проходят по кратчайшему пути вдоль поверхности Земли (сфера) и часто отображаются в виде изогнутых линий на карте с проекцией Меркатора. Негеодезические сегменты изображаются на карте прямыми линиями.

Установите это свойство в объекте параметров фигуры, вызвав *Options.geodesic() , где true указывает, что сегменты должны быть нарисованы как геодезические, а false указывает, что сегменты должны быть нарисованы как прямые линии. Если не указано, по умолчанию используются негеодезические сегменты ( false ).

После того, как форма была добавлена ​​на карту, к геодезическим настройкам можно получить доступ, вызвав isGeodesic() , и их можно изменить, вызвав setGeodesic() .

Z-индекс

Z-индекс определяет порядок стека этой формы относительно других наложений (других форм, наложений на землю и наложений плитки) на карте. Наложение с высоким z-индексом рисуется поверх наложений с более низким z-индексом. Два наложения с одинаковым z-индексом рисуются в произвольном порядке.

Обратите внимание, что маркеры всегда рисуются над другими наложениями, независимо от z-индекса других наложений.

Установите это свойство в объекте параметров фигуры, вызвав *Options.zIndex() . Если не указано, z-индекс по умолчанию равен 0 . После того, как фигура была добавлена ​​на карту, доступ к z-индексу можно получить, вызвав getZIndex() , и его можно изменить, вызвав setZIndex() .

Видимость

Видимость указывает, следует ли рисовать фигуру на карте, где true указывает, что ее следует рисовать, а false — нет. Позволяет временно не отображать фигуру на карте. Чтобы навсегда удалить фигуру с карты, вызовите для этой фигуры метод remove() .

Установите это свойство в объекте параметров формы, вызвав *Options.visible() . Если не указано, видимость по умолчанию имеет значение true . После того, как фигура была добавлена ​​на карту, доступ к видимости можно получить, вызвав isVisible() , и изменить ее, вызвав setVisible() .

Связывание данных с фигурой

Вы можете сохранить произвольный объект данных с ломаной линией, многоугольником или кругом, используя метод формы setTag() , и получить объект, используя getTag() . Например, вызовите Polyline.setTag() , чтобы сохранить объект данных с ломаной линией, и вызовите Polyline.getTag() , чтобы получить объект данных.

В приведенном ниже коде определяется произвольный тег ( A ) для указанной полилинии:

Ява


Polyline polyline = map.addPolyline((new PolylineOptions())
    .clickable(true)
    .add(new LatLng(-35.016, 143.321),
        new LatLng(-34.747, 145.592),
        new LatLng(-34.364, 147.891),
        new LatLng(-33.501, 150.217),
        new LatLng(-32.306, 149.248),
        new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

Котлин


val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309)
        )
)
polyline.tag = "A"

      

Вот несколько примеров сценариев, когда полезно хранить и извлекать данные с помощью фигур:

  • Ваше приложение может поддерживать разные типы фигур, и вы хотите по-разному обрабатывать их, когда пользователь нажимает на них.
  • Возможно, вы взаимодействуете с системой, которая имеет уникальные идентификаторы записей, где фигуры представляют определенные записи в этой системе.
  • Данные формы могут указывать приоритет для определения z-индекса для формы.