Объединять несколько многоугольников в одном в google maps (Android)

Как я могу объединять несколько polygon в API google maps для android в единственном polygon?

У меня есть несколько многоугольников, чтобы рисовать в карте вместе, я хочу представить это как единственный многоугольник, для того, чтобы, во время это того, чтобы красить, он не покрасил мне края, которые граничат одни с другими, и был виден единственным многоугольником. Какая-то идея, чтобы реализовывать это задание?

Я оставляю им изображение, чтобы осветлять больше мой вопрос

introducir la descripción de la imagen aquí

1
задан 18.01.2017, 23:36
0 ответов

Уже я это решил:)

Я использовал книжный магазин JTS GeoTools http://geotools.org/. Всех тех, кто приходят, я использовал следующую: jts-1.13.jar. Я помещаю код, если бы кому-то было надо делать то же самое или казавшийся, его переместил список PolygonOptions api google maps и он возвращает мне PolygonOption с дружными всеми.

Заметь: только функционируй, если наделы объединены с одной стороны.

public static PolygonOptions combineIntoOneGeometry(List<PolygonOptions> polygonOptionses )
{
    PolygonOptions polygonOptions = new PolygonOptions();
    GeometryFactory factory = new GeometryFactory();

    List<Geometry> geometryList = new ArrayList<>();
    for( int i = 0; i < polygonOptionses.size(); i++)
    {
        List<LatLng> latLngList = polygonOptionses.get(i).getPoints();
        Coordinate[] coords  = new Coordinate[latLngList.size()];
        for( int j = 0; j < latLngList.size();j++)
        {
            coords[j] = new Coordinate(latLngList.get(j).latitude, latLngList.get(j).longitude);

        }
        coords[coords.length - 1] = coords[0];
        LinearRing ring = factory.createLinearRing( coords );
        LinearRing holes[] = null; // use LinearRing[] to represent holes
        com.vividsolutions.jts.geom.Polygon polygon = factory.createPolygon(ring, holes );

        geometryList.add(polygon);
    }

    Geometry polygonMain = geometryList.get(0);
    for(int i = 1; i < geometryList.size(); i++)
    {
        Geometry geoAux = polygonMain.union(geometryList.get(i));
        polygonMain = geoAux;
    }

    Coordinate[] coordinates = polygonMain.getCoordinates();
    List<LatLng> points = new ArrayList<>();
    for( int i = 0; i < coordinates.length; i++ )
    {
        points.add(i, new LatLng(coordinates[i].x, coordinates[i].y));
    }
    polygonOptions.addAll(points);

    return polygonOptions;
}

И это результат:

introducir la descripción de la imagen aquí

Большое спасибо всем.

2
ответ дан 03.12.2019, 17:39