Open
Conversation
- Added PolylineConfig enhancements (drawsOccludedSegments, onClick). - Created PolylinesActivity with Sanitas Loop demo (double polyline, hovering). - Wired click listener to show Toast via rememberCoroutineScope. - Removed useless MAPS_API_KEY warning from build files.
- Added extruded museum building to PolygonsActivity.kt using a custom extrusion helper. - Added onClick callback to PolygonConfig in DataModels.kt and handled it in Map3DState.kt. - Updated PolygonsActivity.kt to use click listeners on the zoo and museum polygons. - Expanded unit tests in MappersTest.kt to cover default values. - Cleaned up fully qualified names in DataModels.kt. - Added missing imports in PolygonsActivity.kt to resolve compilation errors.
…striction crash - Add MapOptionsActivity to demonstrate map options and camera restrictions. - Add PopoversActivity to demonstrate popovers. - Implement toValidCameraRestriction() extension function to sanitize CameraRestriction parameters. - Provide safe defaults from defined ranges when parameters are null to prevent crashes in the native SDK. - Ensure min <= max for altitude, heading, and tilt by swapping values if necessary. - Refactor GoogleMap3D.kt to use the new extension function. - Update MainActivity and AndroidManifest to include new samples. - Clean up SampleScreens.kt.
…tecture - Moved BasicMapSample to its own file for better modularity. - Implemented ModelsActivity to demonstrate loading 3D models and orchestrating cinematic camera animations. - Registered ModelsActivity in the manifest and updated MainActivity to launch it. - Added unit tests in UtilitiesTest.kt for CameraRestriction validation. - Removed old placeholders from SampleScreens.kt. - Included pre-existing changes in PolylinesActivity and deletion of properties file.
- Refactor "Basic Map with Marker & Polyline" sample to launch BasicMapActivity instead of using inline state. - Create BasicMapActivity and register it in the manifest. - Delete empty SampleScreens.kt file. - Simplify polyline in PolylinesActivity to fix visual test failure. - Increase timeout and add delay in Maps3DVisualTest for map interactions. - Add log in MapInteractionsActivity for debugging clicks. - Fix ktlint violations and clean up unused imports across the project.
…mentation - Implement `PopoverConfig` in `DataModels.kt` to support declarative popovers in Compose. - Add `popovers` parameter and `onMapClick` callback to `GoogleMap3D` composable to enable state-driven popover management and map interaction. - Implement `syncPopovers` in `Map3DState.kt` to handle the mapping between Compose configurations and native SDK Popover instances. - Refactor `PopoversActivity` in `maps3d-compose-demo` to demonstrate the declarative API, setting `autoPanEnabled` and `autoCloseEnabled` to false for predictable, state-driven UI behavior. - Add `README.md` files to both `maps3d-compose` and `maps3d-compose-demo` modules to clarify their purpose as reference implementations. - Relocate and expand `compose_api_coverage.md` into a comprehensive checklist tracking specific SDK classes and listeners, highlighting unsupported features like `Map3DViewUiController`. - Update root `README.md` to document the new modules with explicit warnings about their experimental nature.
kikoso
reviewed
Apr 15, 2026
| modifier = modifier, | ||
| factory = { context -> | ||
| val map3dView = Map3DView(context, options) | ||
| map3dView.onCreate(null) |
Collaborator
There was a problem hiding this comment.
I am thinking if adding this would make sure we can restore the state about reconfiguration changes:
Suggested change
| map3dView.onCreate(null) | |
| map3dView.onCreate(LocalSavedStateRegistryOwner.current ) |
kikoso
reviewed
Apr 15, 2026
| map3dView | ||
| }, | ||
| update = { map3dView -> | ||
| map3dView.getMap3DViewAsync(object : OnMap3DViewReadyCallback { |
Collaborator
There was a problem hiding this comment.
We are calling this on every recomposition. What about calling it on the factory() lambda?
kikoso
reviewed
Apr 15, 2026
| */ | ||
| class GeminiVisualTestHelper { | ||
|
|
||
| private val client = HttpClient(CIO) { |
Collaborator
There was a problem hiding this comment.
This is never closed. I am not sure if something like https://developer.android.com/reference/java/lang/AutoCloseable could help.
kikoso
reviewed
Apr 15, 2026
|
|
||
| private val client = HttpClient(CIO) { | ||
| install(HttpTimeout) { | ||
| requestTimeoutMillis = 60000 |
Collaborator
There was a problem hiding this comment.
The nittest of the nits:
Suggested change
| requestTimeoutMillis = 60000 | |
| requestTimeoutMillis = 60_000 |
kikoso
reviewed
Apr 15, 2026
| private val client = HttpClient(CIO) { | ||
| install(HttpTimeout) { | ||
| requestTimeoutMillis = 60000 | ||
| connectTimeoutMillis = 60000 |
Collaborator
There was a problem hiding this comment.
Suggested change
| connectTimeoutMillis = 60000 | |
| connectTimeoutMillis = 60_000 |
kikoso
reviewed
Apr 15, 2026
| install(HttpTimeout) { | ||
| requestTimeoutMillis = 60000 | ||
| connectTimeoutMillis = 60000 | ||
| socketTimeoutMillis = 60000 |
Collaborator
There was a problem hiding this comment.
Suggested change
| socketTimeoutMillis = 60000 | |
| socketTimeoutMillis = 60_000 |
kikoso
reviewed
Apr 15, 2026
| helper.performActionFromPrompt("Click the CLUSTERING button", uiDevice, geminiApiKey) | ||
|
|
||
| // Wait for the clustering screen to load and map to render | ||
| TimeUnit.SECONDS.sleep(5) |
Collaborator
There was a problem hiding this comment.
Does the onMapSteadyListener could work here?
…40) * feat: Implement OnCameraChangedListener and add Whiskey Compass demo - Exposed onCameraChanged callback in GoogleMap3D composable. - Added WhiskeyCompass composable in demo app. - Added CameraChangedActivity to demonstrate camera changes with compass, tilt scale, and range scale. - Updated compose_api_coverage.md. * docs: Add code reference link for OnCameraChangedListener in coverage doc * refactor: Move camera changed demo widgets to widgets package - Moved WhiskeyCompass.kt to widgets package. - Extracted TiltScale and RangeScale to separate files in widgets package. - Updated CameraChangedActivity to use widgets from the new package.
* feat: Implement OnCameraChangedListener and add Whiskey Compass demo - Exposed onCameraChanged callback in GoogleMap3D composable. - Added WhiskeyCompass composable in demo app. - Added CameraChangedActivity to demonstrate camera changes with compass, tilt scale, and range scale. - Updated compose_api_coverage.md. * docs: Add code reference link for OnCameraChangedListener in coverage doc * refactor: Move camera changed demo widgets to widgets package - Moved WhiskeyCompass.kt to widgets package. - Extracted TiltScale and RangeScale to separate files in widgets package. - Updated CameraChangedActivity to use widgets from the new package. * feat: Implement PinConfiguration support and add visual test * docs: Update API coverage for PinConfiguration * docs: Clean up compose coverage file * docs: Remove supported items from Not Yet Exposed list * docs: Remove PinView from coverage checklist * feat: Implement OnPlaceClickListener support and add visual test * docs: Remove unsupported APIs from coverage checklist
kikoso
reviewed
Apr 16, 2026
| alias(libs.plugins.kotlin.android) | ||
| alias(libs.plugins.kotlin.compose) | ||
| alias(libs.plugins.secrets.gradle.plugin) | ||
| id("com.diffplug.spotless") version "6.25.0" |
Collaborator
There was a problem hiding this comment.
Could this be moved to the catalog?
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.
This PR introduces a new Jetpack Compose wrapper for the Maps 3D SDK (
GoogleMap3D) and implements several sample activities to demonstrate its usage:Key features added to the wrapper:
MarkerConfig.Markerinstance for popover anchoring.All activities are exported in the manifest for direct launching.