π±Mixed platforms
If you are targeting Mobile (Android/iOS) and other platforms like Desktop, or the Browser. You will need to do some additional setup since the Mobile Geocoder/Geolocation services aren't available.
Geocoding example
This example is for a Compose Multiplatform app that targets mobile and Desktop, using Google Maps on non-mobile platforms. This is just an example, be sure to customize to your needs.
Declare Dependencies
First you will need to add the necessary dependencies:
# gradle/libs.versions.toml
[libraries]
compass-geocoder = { module = "dev.jordond.compass:geocoder", version.ref = "compass" }
compass-geocoder-mobile = { module = "dev.jordond.compass:geocoder-mobile", version.ref = "compass" }
compass-geocoder-web = { module = "dev.jordond.compass:geocoder-web", version.ref = "compass" }
compass-geocoder-web-googlemaps = { module = "dev.jordond.compass:geocoder-googlemaps", version.ref = "compass" }
compass-geocoder-web-mapbox = { module = "dev.jordond.compass:geocoder-mapbox", version.ref = "compass" }Add dependencies & create source-set
Now you need to edit the build.gradle.kts for your application module and add the following dependencies to the proper source-sets.
Add platform expect/actual
This will produce the following folder structure, which you can then define a expect function to create a Geocoder instance:
Inside of commonMain/kotlin/src/Platform.kt you need to define an expect function that creates a Geocoder instance:
Then you need to create the actual functions:
And for the nonMobile source set:
Using the Geocoder
Now that you are all setup you can use your createGeocoder() function in the commonMain source-set:
Last updated
Was this helpful?