mapbox-maps-flutter
mapbox-maps-flutter copied to clipboard
Tile Region estimate is 0 on Android
When trying to estimate a region, it works on iOS and returns the size in bytes. But on Android it returns 0 for transfer size and estimate size.
Tested on 2.5.1.
Our code looks like this:
/// Returns the number of bytes that are the estimated transfer size.
Future<int> estimateTransferRegionSize({
required String styleUri,
required MapRegionMetaData metaData,
}) async {
TileRegionEstimateResult estimate =
await _tileStoreService.estimateRegionSize(
regionId: _generateRegionId(metaData.polygon, metaData.zoomRange),
styleUri: styleUri,
metaData: metaData,
);
// Returns 0 on Android
print(estimate.storageSize);
// Returns 0 on Android
print(estimate.transferSize);
return estimate.transferSize;
}
Future<TileRegionEstimateResult> estimateRegionSize({
required String regionId,
required String styleUri,
required MapRegionMetaData metaData,
void Function(TileRegionEstimateProgress)? progressListener,
}) async {
TileStore store = await _tileStore.get();
TileRegionLoadOptions loadOptions = _getLoadOptions(styleUri, metaData);
return store.estimateTileRegion(
regionId,
loadOptions,
_getEstimateOptions(),
progressListener,
);
}
TileRegionLoadOptions _getLoadOptions(
String styleUri,
MapRegionMetaData metaData,
) {
/// Needed because https://github.com/mapbox/mapbox-maps-flutter/issues/846,
/// can be removed when 2.6.0 got released.
TilesetDescriptorOptions tilesetDescriptorOptions =
_getTilesetDescriptorOptions(styleUri, metaData.zoomRange);
Map<String, dynamic> geometryJson = metaData.polygon.toJson()
..remove('bbox');
return TileRegionLoadOptions(
acceptExpired: true,
networkRestriction: NetworkRestriction.NONE,
geometry: geometryJson,
metadata: metaData.toJson(),
extraOptions: {'test': 3},
startLocation:
Point(coordinates: metaData.polygon.coordinates.first.first),
descriptorsOptions: <TilesetDescriptorOptions?>[tilesetDescriptorOptions],
);
}
An example of the metadata looks like this:
{updated_at: 1738085493503, created_at: 1738085493503, polygon: {type: Polygon, coordinates: [[[-0.00007829435426742748, 0.0002035126051964653], [0.00012067678505900403, -0.00016614456038155367], [-0.00007829435426742748, -0.00016614456038155367], [0.00012067678505900403, 0.0002035126051964653], [-0.00007829435426742748, 0.0002035126051964653]]]}, name: Ostsee, min_zoom: 0, max_zoom: 13}
I need to correct myself. It does sometimes return the estimated storage size but estimated transfer size is still 0. I cannot isolate what causes the "sometimes". At least right now the estimated storage size is correct.