Объекты и геометрии

Объекты

Объект (Feature) относится к базовому строительному блоку, который представляет некоторый элемент на карте. Объекты могут включать точки, линии, полигоны или другие геометрии, которые предоставляют пространственную информацию на карте.

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

GeoMap поддерживает следующие объекты:

MarkerFeature

Объект-маркер представляет элемент маркера с предопределенной PointGeometry. Он отображается значком маркера в компоненте карты.

Следующий пример демонстрирует, как создать и разместить маркер на карте:

@ViewComponent("geoMap.vector.vectorSource")
private VectorSource vectorSource;

@Subscribe
public void onInit(final InitEvent event) {
    vectorSource.addFeature(new MarkerFeature
            (GeometryUtils.createPoint(40, 40)));
}

PointFeature

Точечный объект представляет точку с предопределенной PointGeometry. Он отображается как точка со стилем по умолчанию. Для получения более подробной информации смотрите документацию Feature.

Следующий пример демонстрирует, как создать и разместить точку на карте:

@ViewComponent("geoMap.vector.vectorSource")
private VectorSource vectorSource;

@Subscribe
public void onInit(final InitEvent event) {
    vectorSource.addFeature(new PointFeature
            (GeometryUtils.createPoint(13.046446, 47.797916)));
}

LineStringFeature

LineStringFeature представляет линейный объект на карте, обычно отображаемый как полилиния, соединяющая несколько точек. Объект-полилиния поставляется с предопределенной LineStringGeometry. Для получения более подробной информации смотрите документацию Feature.

Следующий пример демонстрирует, как создать и разместить полилинию на карте:

private final GeometryFactory geometries = GeometryUtils.getGeometryFactory();

@ViewComponent("geoMap.vector.vectorSource")
private VectorSource vectorSource;

@Subscribe
public void onInit(final InitEvent event) {
    vectorSource.addFeature(new LineStringFeature
            (geometries.createLineString(new Coordinate[]{
                    new Coordinate(13, 20),
                    new Coordinate(13, 32),
                    new Coordinate(25, 17)})));
}

PolygonFeature

PolygonFeature представляет замкнутую геометрическую фигуру на карте, определяющую область или регион. Этот объект используется для отображения и работы с полигонами, которые определяются коллекцией взаимосвязанных точек, образующих замкнутый контур. Объект-полигон поставляется с предопределенной PolygonGeometry. Для получения более подробной информации смотрите документацию Feature.

Следующий пример демонстрирует, как создать и разместить полигон на карте:

private final GeometryFactory geometries = GeometryUtils.getGeometryFactory();

@ViewComponent("geoMap.vector.vectorSource")
private VectorSource vectorSource;

@Subscribe
public void onInit(final InitEvent event) {
    vectorSource.addFeature(new PolygonFeature
            (geometries.createPolygon
                    (geometries.createLinearRing(new Coordinate[]{
                            new Coordinate(1.2457020544488762, 42.476628901048684),
                            new Coordinate(-0.054875980233204155, 52.77260344863316),
                            new Coordinate(29.858418817454655, 46.105591288830624),
                            new Coordinate(1.2457020544488762, 42.476628901048684),
                    }))));
}

MultiMarkerFeature

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

Следующий пример демонстрирует, как создать и разместить MultiMarkerFeature на карте:

private final GeometryFactory geometries = GeometryUtils.getGeometryFactory();

@ViewComponent("geoMap.vectorLayer.vSource")
private VectorSource vSource;

@Subscribe
public void onInit(final InitEvent event) {
    MultiPoint multiMarkerPoint = geometries.createMultiPoint(new Point[]{
            GeometryUtils.createPoint(25.235641166883457, 39.917862345662456),
            GeometryUtils.createPoint(25.36806516981515, 37.08014053731078)});
    vSource.addFeature(new MultiMarkerFeature(multiMarkerPoint));
}

MultiPointFeature

Объект-мультиточка представляет мультиточку с предопределенной MultiPointGeometry. Он отображается как точки со стилем по умолчанию. Для получения более подробной информации смотрите документацию Feature.

Следующий пример демонстрирует, как создать и разместить мультиточку на карте:

private final GeometryFactory geometries = GeometryUtils.getGeometryFactory();

@ViewComponent("geoMap.vectorLayer.vSource")
private VectorSource vSource;

@Subscribe
public void onInit(final InitEvent event) {
    MultiPoint multiPoint = geometries.createMultiPoint(new Point[]{
            GeometryUtils.createPoint(2.348582286131592, 48.84306719072006),
            GeometryUtils.createPoint(-0.1503049900024013, 51.54906255948154)});
    vSource.addFeature(new MultiPointFeature(multiPoint));
}

MultiLineStringFeature

MultiLineStringFeature представляет линейные объекты на карте, обычно отображаемые как коллекция нескольких линейных строк. MultiLineStringFeature поставляется с предопределенной MultiLineStringGeometry. Для получения более подробной информации смотрите документацию Feature.

Следующий пример демонстрирует, как создать и разместить мультилинию на карте:

private final GeometryFactory geometries = GeometryUtils.getGeometryFactory();

@ViewComponent("geoMap.vectorLayer.vSource")
private VectorSource vSource;

@Subscribe
public void onInit(final InitEvent event) {
    LineString lineString1 = geometries.createLineString(new Coordinate[]{
            new Coordinate(37.59610278959945, 55.75230701125054),
            new Coordinate(24.94409456852425, 60.18627418174103),
            new Coordinate(12.483009200616205, 41.87228189777008)});

    LineString lineString2 = geometries.createLineString(new Coordinate[]{
            new Coordinate(30.799901492251276, 36.89489780945887),
            new Coordinate(-3.71329777467964, 40.4106248584977)});

    MultiLineString multiLineString = geometries.createMultiLineString(
            new LineString[]{lineString1, lineString2});
    vSource.addFeature(new MultiLineStringFeature(multiLineString));
}

MultiPolygonFeature

MultiPolygonFeature представляет геометрию, состоящую из нескольких сгруппированных вместе полигонов. Каждый полигон в MultiPolygonFeature состоит из замкнутой формы, определенной последовательностью точек, и поставляется с предопределенной MultiPolygonGeometry. Для получения более подробной информации смотрите документацию Feature.

Следующий пример демонстрирует, как создать и разместить MultiPolygonFeature на карте:

private final GeometryFactory geometries = GeometryUtils.getGeometryFactory();

@ViewComponent("geoMap.vectorLayer.vSource")
private VectorSource vSource;

@Subscribe
public void onInit(final InitEvent event) {
    Polygon polygon1 = geometries.createPolygon(
            geometries.createLinearRing(new Coordinate[]{
                    new Coordinate(25.095057034220535, 31.6734818426374),
                    new Coordinate(25.095057034220535, 21.916591864189783),
                    new Coordinate(36.273764258555126, 21.916591864189783),
                    new Coordinate(31.711026615969566, 30.893621948904325),
                    new Coordinate(25.095057034220535, 31.6734818426374)}));

    Polygon polygon2 = geometries.createPolygon(
            geometries.createLinearRing(new Coordinate[]{
                    new Coordinate(26.836428848759905, 40.89954566030514),
                    new Coordinate(26.836428848759905, 35.71188725771292),
                    new Coordinate(45.08737941910209, 36.265661479563505),
                    new Coordinate(43.49042124419716, 41.4148387201449),
                    new Coordinate(26.836428848759905, 40.89954566030514)}));

    MultiPolygon multiPolygon = geometries.createMultiPolygon(new Polygon[]
            {polygon1, polygon2});
    vSource.addFeature(new MultiPolygonFeature(multiPolygon));
}

Геометрии

PointGeometry

PointGeometry - это объект, содержащий org.locationtech.jts.geom.Point из библиотеки JTS.

LineStringGeometry

LineStringGeometry - это объект, содержащий org.locationtech.jts.geom.LineString из библиотеки JTS.

PolygonGeometry

PolygonGeometry - это объект, содержащий org.locationtech.jts.geom.Polygon из библиотеки JTS.

MultiPointGeometry

MultiPointGeometry - это объект, содержащий org.locationtech.jts.geom.MultiPoint из библиотеки JTS.

MultiLineStringGeometry

MultiLineStringGeometry - это объект, содержащий org.locationtech.jts.geom.MultiLineString из библиотеки JTS.

MultiPolygonGeometry

MultiPolygonGeometry - это объект, содержащий org.locationtech.jts.geom.MultiPolygon из библиотеки JTS.