-
Notifications
You must be signed in to change notification settings - Fork 60
Open
Description
Крашится приложение при вызове метода load у TileProvider
internal class GeoJsonTileProvider(
private val quadKeyRepository: QuadKeyRepository,
private val geoJsonFactory: GeoJsonFactory,
private val projection: Projection,
private val mapProtocol: MapProtocol,
private val valueVisibilityGeoJsonLayer: Int,
context: Context
) : TileProvider {
private val selectedMarkerId = -1
val colorbase = ContextCompat.getColor(context, R.color.light_gray)
val color1 = ContextCompat.getColor(context, R.color.transparent_green)
val color2 = ContextCompat.getColor(context, R.color.transparent_yellow)
val color3 = ContextCompat.getColor(context, R.color.transparent_crimson)
private fun generateGeoJsonFeature(tileId: TileId, projection: Projection): ByteArray? {
return try {
val mapBounds = TileUtil.getRegion(projection, tileId)
val geoJsonString = geoJsonFactory.createGeoJsonString(mapBounds, selectedMarkerId)
println("generateGeoJsonFeature $geoJsonString")
geoJsonString.toByteArray()
} catch (ex: Exception) {
println("generateGeoJsonFeature ex $ex")
null
}
}
private fun drawQuad(quadKey: QuadKey, color: Int) {
if (mapProtocol.isDebugMode()) {
val mapBounds = TileUtil.getRegion(projection, TileId(quadKey.x, quadKey.y, quadKey.z))
val rect = Rect(mapBounds.minLat, mapBounds.maxLat, mapBounds.minLon, mapBounds.maxLon)
mapProtocol.drawQuad(quadKey.toString(), rect, color)
}
}
override fun load(
tileId: TileId,
version: Version,
features: Map<String, String>,
etag: String
): RawTile {
val quadKey =
QuadKey(tileId.x, tileId.y, tileId.z)
drawQuad(quadKey, colorbase)
val data = generateGeoJsonFeature(tileId, projection)
val rawTile: RawTile = if (data != null && data.isNotEmpty()) {
println("tile provider load generateGeoJsonFeature $data")
quadKeyRepository.addQuadKey(quadKey, version.str)
drawQuad(quadKey, color2)
RawTile(
version,
features,
quadKey.toString(),
RawTile.UseCache.YES,
RawTile.State.OK,
data
)
} else {
drawQuad(quadKey, color3)
RawTile(
version,
features,
etag,
RawTile.UseCache.NO,
RawTile.State.ERROR,
ByteArray(0)
)
}
return rawTile
}
}
создаю tileLayer и вызываю invalidate у TileDataSource
override fun createGeoJsonLayer() {
if (layer != null && layer?.isValid == true) return
if (geoJsonTileProvider == null || !isGeoJsonWasAddedOnMap) {
geoJsonTileProvider = createTileProvider(projection)
}
if (dataSource == null) {
dataSource = CreateTileDataSource { tileDataSourceBuilder ->
tileDataSourceBuilder.setTileFormat(TileFormat.GEO_JSON)
tileDataSourceBuilder.setTileProvider(geoJsonTileProvider as TileProvider)
tileDataSourceBuilder.setProjection(projection)
}
}
val layerOptions = LayerOptions()
layerOptions.active = true
layerOptions.animateOnActivation = true
layerOptions.overzoomMode = OverzoomMode.WITH_PREFETCH
map()?.let {
layer = it.addTileLayer(
MAP_ITEM_LAYER_NAME,
layerOptions,
dataSource!!
)
val version = quadKeyRepository.version()
layer?.dataSourceLayer()?.setDataSourceListener {
(it as? TileDataSource)?.invalidate(version)
}
isGeoJsonWasAddedOnMap = true
}
}
вот rawData которая конвертируется в ByteArray:
{
"layers": [
{
"type": "FeatureCollection",
"name": "line_unknown",
"features": [
{
"type": "Feature",
"id": "parking_48629",
"geometry": {
"type": "LineString",
"coordinates": [
[
37.70894535327568,
55.610277444846076
],
[
37.70813245698572,
55.61181468421711
]
]
},
"properties": {
"tag": "unknown",
"city": "msk",
"id": "parking_48629",
"blocked": "false"
}
},
{
"type": "Feature",
"id": "parking_48634",
"geometry": {
"type": "LineString",
"coordinates": [
[
37.70868349908336,
55.61037352534835
],
[
37.707934234843066,
55.61179151342253
]
]
},
"properties": {
"tag": "unknown",
"city": "msk",
"id": "parking_48634",
"blocked": "false"
}
}
]
}
]
}
крашится с ошибкой
Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 15610 (YMK_3#BgHigh), pid 15140 (map.appnew)
---------------------------- PROCESS STARTED (15730) for package ru.map.appnew ----------------------------
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A Cmdline: ru.map.appnew
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A pid: 15140, tid: 15610, name: YMK_3#BgHigh >>> ru.map.appnew <<<
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #01 pc 00000000015ca764 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #02 pc 00000000015d2008 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #03 pc 000000000103afd0 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #04 pc 000000000103c624 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #05 pc 0000000000e702a0 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #06 pc 0000000000e74018 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
2025-09-03 12:44:27.676 15699-15699 DEBUG crash_dump64 A #07 pc 0000000001a2a008 /data/app/~~a9emC7ekXA6uJV_mhSp95g==/ru.map.appnew-rGnZqR5Vk7-c1nCC87b6cA==/lib/arm64/libmaps-mobile.so (BuildId: 8964493e3f69d2e2)
Metadata
Metadata
Assignees
Labels
No labels