Suggested solution would be to convert KMZ to GeoJSON beforehand with some tool. SDK itself does not do it. IN SDK you can then use GeoJSONGeometryReader to parse GeoJSON and add it finally to map as VectorLayer. My generic functions to do all this:
// usage: the file tpr-men.geojson is in assets folder of project
polygonGeoJSON(mapView,"tpr-men.geojson",android.graphics.Color.LTGRAY);
//helper function to read polygons from GeoJSON file, sets styles
private void polygonGeoJSON(MapView mapView, final String fileName, int color) {
final Thread thread;// Initialize a local vector data source
final LocalVectorDataSource source = new LocalVectorDataSource(baseProjection);
// Initialize a vector layer with the previous data source
VectorLayer vectorLayer = new VectorLayer(source);
vectorLayer.setVectorElementEventListener(listener);
// Add the clustered vector layer to the map
mapView.getLayers().add(vectorLayer);
LineStyleBuilder lsb = new LineStyleBuilder();
lsb.setColor(new Color(color));
lsb.setWidth(0.5f);
lsb.setLineJoinType(LineJoinType.LINE_JOIN_TYPE_NONE);
lsb.setLineEndType(LineEndType.LINE_END_TYPE_NONE);
PolygonStyleBuilder polygonBuilder = new PolygonStyleBuilder();
polygonBuilder.setColor(new Color(color & 0xbbffffff)); // a bit transparent
//polygonBuilder.setLineStyle(lsb.buildStyle());
final PolygonStyle style = polygonBuilder.buildStyle();
// As the file to load is rather large, we don't want to block our main thread
thread = new Thread(new Runnable() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public void run() {
try {
// Read GeoJSON, parse it using SDK GeoJSON parser
GeoJSONGeometryReader reader = new GeoJSONGeometryReader();
// Set target projection to base (mercator)
reader.setTargetProjection(baseProjection);
Log.d("log","Starting load from .geojson");
// Read features from local asset
String json = loadJSONFromAsset(fileName);
Log.d("log","Finished load from .geojson");
FeatureCollection features = reader.readFeatureCollection(json);
Log.d("log","Finished parsing of geojson, loaded objects: "+features.getFeatureCount());
source.addFeatureCollection(features,style);
} catch (IOException e) {
e.printStackTrace();
}
Log.d("log","Finished load from geojson");
}
});
thread.start();
}
// general helper function to read file to String
private String loadJSONFromAsset(String fileName) throws IOException {
InputStream is = getAssets().open(fileName);
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
return new String(buffer, "UTF-8");
}