use of mil.nga.sf.MultiPolygon in project geopackage-android-map by ngageoint.
the class GoogleMapShapeConverter method toMultiPolygon.
/**
* Convert a list of {@link com.google.android.gms.maps.model.Polygon} to a
* {@link MultiPolygon}
*
* @param polygonList polygon list
* @param hasZ has z flag
* @param hasM has m flag
* @return multi polygon
*/
public MultiPolygon toMultiPolygon(List<com.google.android.gms.maps.model.Polygon> polygonList, boolean hasZ, boolean hasM) {
MultiPolygon multiPolygon = new MultiPolygon(hasZ, hasM);
for (com.google.android.gms.maps.model.Polygon mapPolygon : polygonList) {
Polygon polygon = toPolygon(mapPolygon);
multiPolygon.addPolygon(polygon);
}
return multiPolygon;
}
use of mil.nga.sf.MultiPolygon in project geopackage-android-map by ngageoint.
the class GoogleMapShapeConverter method addPolygonsToMap.
/**
* Add a list of Polygons to the map
*
* @param map google map
* @param polygons multi polygon options
* @return multi polygon
*/
public static mil.nga.geopackage.map.geom.MultiPolygon addPolygonsToMap(GoogleMap map, MultiPolygonOptions polygons) {
mil.nga.geopackage.map.geom.MultiPolygon multiPolygon = new mil.nga.geopackage.map.geom.MultiPolygon();
for (PolygonOptions polygonOption : polygons.getPolygonOptions()) {
if (polygons.getOptions() != null) {
polygonOption.fillColor(polygons.getOptions().getFillColor());
polygonOption.strokeColor(polygons.getOptions().getStrokeColor());
polygonOption.geodesic(polygons.getOptions().isGeodesic());
polygonOption.visible(polygons.getOptions().isVisible());
polygonOption.zIndex(polygons.getOptions().getZIndex());
polygonOption.strokeWidth(polygons.getOptions().getStrokeWidth());
}
com.google.android.gms.maps.model.Polygon polygon = addPolygonToMap(map, polygonOption);
multiPolygon.add(polygon);
}
return multiPolygon;
}
use of mil.nga.sf.MultiPolygon in project geopackage-android-map by ngageoint.
the class GoogleMapShapeConverter method toMultiPolygonFromOptions.
/**
* Convert a list of {@link PolygonOptions} to a {@link MultiPolygon}
*
* @param multiPolygonOptions multi polygon options
* @param hasZ has z flag
* @param hasM has m flag
* @return multi polygon
*/
public MultiPolygon toMultiPolygonFromOptions(MultiPolygonOptions multiPolygonOptions, boolean hasZ, boolean hasM) {
MultiPolygon multiPolygon = new MultiPolygon(hasZ, hasM);
for (PolygonOptions mapPolygon : multiPolygonOptions.getPolygonOptions()) {
Polygon polygon = toPolygon(mapPolygon);
multiPolygon.addPolygon(polygon);
}
return multiPolygon;
}
use of mil.nga.sf.MultiPolygon in project geopackage-android-map by ngageoint.
the class GoogleMapShapeConverter method addToMap.
/**
* Convert a {@link Geometry} to a Map shape and add it
*
* @param map google map
* @param geometry geometry
* @return google map shape
*/
@SuppressWarnings("unchecked")
public GoogleMapShape addToMap(GoogleMap map, Geometry geometry) {
GoogleMapShape shape = null;
GeometryType geometryType = geometry.getGeometryType();
switch(geometryType) {
case POINT:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MARKER, addLatLngToMap(map, toLatLng((Point) geometry)));
break;
case LINESTRING:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.POLYLINE, addPolylineToMap(map, toPolyline((LineString) geometry)));
break;
case POLYGON:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.POLYGON, addPolygonToMap(map, toPolygon((Polygon) geometry)));
break;
case MULTIPOINT:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MULTI_MARKER, addLatLngsToMap(map, toLatLngs((MultiPoint) geometry)));
break;
case MULTILINESTRING:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MULTI_POLYLINE, addPolylinesToMap(map, toPolylines((MultiLineString) geometry)));
break;
case MULTIPOLYGON:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MULTI_POLYGON, addPolygonsToMap(map, toPolygons((MultiPolygon) geometry)));
break;
case CIRCULARSTRING:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.POLYLINE, addPolylineToMap(map, toPolyline((CircularString) geometry)));
break;
case COMPOUNDCURVE:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MULTI_POLYLINE, addPolylinesToMap(map, toPolylines((CompoundCurve) geometry)));
break;
case CURVEPOLYGON:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.POLYGON, addPolygonToMap(map, toCurvePolygon((CurvePolygon<Curve>) geometry)));
break;
case POLYHEDRALSURFACE:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MULTI_POLYGON, addPolygonsToMap(map, toPolygons((PolyhedralSurface) geometry)));
break;
case TIN:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MULTI_POLYGON, addPolygonsToMap(map, toPolygons((TIN) geometry)));
break;
case TRIANGLE:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.POLYGON, addPolygonToMap(map, toPolygon((Triangle) geometry)));
break;
case GEOMETRYCOLLECTION:
shape = new GoogleMapShape(geometryType, GoogleMapShapeType.COLLECTION, addToMap(map, (GeometryCollection<Geometry>) geometry));
break;
default:
throw new GeoPackageException("Unsupported Geometry Type: " + geometryType.getName());
}
return shape;
}
use of mil.nga.sf.MultiPolygon in project geopackage-android-map by ngageoint.
the class GoogleMapShapeConverterUtils method convertMultiPolygon.
/**
* Test the MultiPolygon conversion
*
* @param converter
* @param multiPolygon
*/
private static void convertMultiPolygon(GoogleMapShapeConverter converter, MultiPolygon multiPolygon) {
MultiPolygonOptions mapPolygons = converter.toPolygons(multiPolygon);
TestCase.assertNotNull(mapPolygons);
TestCase.assertFalse(mapPolygons.getPolygonOptions().isEmpty());
List<Polygon> polygons = multiPolygon.getPolygons();
comparePolygonsAndMapPolygons(converter, polygons, mapPolygons.getPolygonOptions());
MultiPolygon multiPolygon2 = converter.toMultiPolygonFromOptions(mapPolygons);
comparePolygons(polygons, multiPolygon2.getPolygons());
}
Aggregations