hello everyone im trying to use osmdroid in my compose project and im not really familiar with xml,when i run the app its just a checkered screen and no map in UI. i will provide the whole code down below
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<org.osmdroid.views.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<androidx.compose.ui.platform.ComposeView
android:id="@+id/composeView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
class XmlClass : ComponentActivity() {
private lateinit var binding: LayoutBinding
override fun onCreate(savedInstanceState: Bundle?) {
lateinit var map: MapView
super.onCreate(savedInstanceState)
binding = LayoutBinding.inflate(layoutInflater)
val view = binding.root
getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this))
setContentView(view)
val mapController = map.controller
mapController.setZoom(9.5) //32.627387981943, 51.62582233021288
val startPoint = GeoPoint(32.627387981943, 51.62582233021288)
mapController.setCenter(startPoint)
binding.map.setTileSource(TileSourceFactory.MAPNIK) //DEFAULT_TILE_SOURCE
binding.composeView.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
val context = LocalContext.current
val navController = NavHostController(context)
MapCarScreen(navController)
}
}
}
}
@Composable fun MapCarScreen(navController: NavHostController) {
//val context = LocalContext.current
Box(modifier = Modifier.fillMaxSize()) {
AndroidView(
factory = { context ->
val mapView = MapView(context)
mapView
},
modifier = Modifier.fillMaxSize()
) { mapView ->
// Use the mapView instance as needed
}
}
}
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
Enable the log of osmdroid,check the log. I guess you don't modify the Osmdroid user-agent.The default UA is denied. Change the UA to any other string and retry.