feat: Add interactive KMP maps demos to iOS app & upgrade Google Maps SDK to 10.14.0 - #927
Draft
kikoso wants to merge 9 commits into
Draft
feat: Add interactive KMP maps demos to iOS app & upgrade Google Maps SDK to 10.14.0#927kikoso wants to merge 9 commits into
kikoso wants to merge 9 commits into
Conversation
…Android and MapKit on iOS
…aps iOS SDK via CocoaPods
kikoso
force-pushed
the
feat/experimental-kmp-module
branch
from
June 5, 2026 15:42
1eff5db to
8852240
Compare
kikoso
marked this pull request as draft
June 5, 2026 15:42
Contributor
Code Coverage
|
kikoso
force-pushed
the
feat/experimental-kmp-module
branch
from
June 5, 2026 16:59
5ce4fd9 to
f2b769f
Compare
dkhawk
force-pushed
the
feat/experimental-kmp-module
branch
from
June 12, 2026 22:16
983e463 to
73006eb
Compare
# Conflicts: # .github/workflows/auto-fix.yml
…anch Adds common-code clustering to maps-compose-multiplatform via the experimental KMP modules of android-maps-utils (maps-model, clustering): clusterMarkers() runs NonHierarchicalDistanceBasedAlgorithm in commonMain and ClusteredGoogleMap renders the resulting clusters, so Android and iOS produce identical clusters from shared code. Consumption paths (see settings.gradle.kts): publishToMavenLocal from ../android-maps-utils plus -PuseMavenLocal=true (full build works, this is the default), or -PuseLocalMapsUtils=true for a composite build (platform compilations work; shared-metadata compilation is skipped by Kotlin's granular-metadata transform across included builds and fails). Note: linkPodDebugFrameworkIosArm64 fails on this branch with or without this change (Kotlin/Native cache failure on compose-ui 1.7.3 uikitarm64); simulator link and all target compilations pass. Claude-Session: https://claude.ai/code/session_01225X6MnAqkyCF7Xones6WY
The maps-compose-multiplatform module now depends on com.google.maps.android:maps-model and :clustering from the feat/experimental-kmp-clustering branch of android-maps-utils, which are not published to any remote repository. Check out that branch and publish the two modules to the runner's mavenLocal in the lint, test and instrumentation workflows, and set USE_MAVEN_LOCAL so the compose build resolves them from there. Claude-Session: https://claude.ai/code/session_01225X6MnAqkyCF7Xones6WY
com.google.maps.android:clustering duplicated the classes of the android-maps-utils-clustering AAR that maps-compose-utils pulls from Maven Central, failing maps-app's checkDebugDuplicateClasses. Depend on android-maps-utils-clustering / android-maps-utils-maps-model instead (matching the renamed KMP publications) so Gradle resolves both paths to one module; mavenLocal shadows the Central AAR with the API-compatible KMP artifact. Claude-Session: https://claude.ai/code/session_01225X6MnAqkyCF7Xones6WY
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR implements rich, interactive map samples in the iOS demo app (
iosApp) similar to the Android app, while extending the multiplatform:maps-compose-multiplatformlibrary API to support a broad set of configurations and upgrading the Google Maps SDK for iOS dependency to version10.14.0.0.Key Changes
UITableViewwith sections:GoogleMapcomposable andGoogleMapViewControllerto supportMapType,MapMarkerlists (multiple pins), location tracking, and gesture settings.16.0across the KMP module, Podfile, and project settings (as required by Google Maps v10+).Populate Secretsbuild phase in the Xcode project to load the API key from local git-ignoredsecrets.propertiesintoDeveloperSecrets.swift. Both files are excluded from Git to prevent security leaks.How to Build & Run on iOS (Step-by-Step)
If you are new to iOS development or running this project for the first time, follow these steps on a Mac with Xcode installed:
1. Checkout the branch
2. Configure your local API Key
Create a file named
secrets.propertiesin the root directory of the repository (if you don't already have one) and paste your Google Maps API key inside:3. Generate the Xcode Project & Install Dependencies
Navigate to the
iosAppdirectory, generate the project files, and run CocoaPods to fetch dependencies:cd iosApp ruby create_project.rb pod install4. Open the Workspace in Xcode
Inside the
iosAppfolder, open the generated.xcworkspacefile (do not open the.xcodeprojfile):5. Run the App
iosApp(instead ofmaps_compose_multiplatform).