* chore: unified Kotlin and Java modules
* chore: unified resources
* chore: removed Kotlin
* chore: headers
* chore: headers
* chore: headers
* chore: headers
* chore: added insets
* chore: headers
* chore: renamed
* fix: Refactor map creation, centralize Map ID, add Kotlin boundary controls
This commit refactors how map fragments and Map IDs are handled across the Java and Kotlin demo applications, and introduces feature parity for boundary layer controls in the Kotlin demo.
Key changes include:
- **Programmatic Map Fragment Creation:**
- Replaced static `<fragment>` map declarations with `<FrameLayout>` containers (`map_fragment_container`) in `data_driven_boundaries_demo.xml` and `data_driven_styling_demo.xml` layouts.
- Modified `DataDrivenBoundariesActivity` and `DataDrivenDatasetStylingActivity` (Java & Kotlin) to instantiate `SupportMapFragment` programmatically using `SupportMapFragment.newInstance(mapOptions)`.
- Map options (`GoogleMapOptions`) are now created with the dynamically retrieved Map ID before fragment creation.
- this allows moving the Map ID out of the xml files
- **Centralized Map ID and Configuration Logic:**
- Introduced `ApiDemoApplication` in both Java (`java-app`) and Kotlin (`kotlin-app`) modules.
- This class centralizes Map ID retrieval, checking `BuildConfig.MAP_ID` first, then the `R.string.map_id` resource, providing a consistent source.
- The Kotlin `ApiDemoApplication` also includes API Key validation on application startup.
- **Kotlin DataDrivenBoundaries Feature Enhancement:**
- Added boundary layer selection controls (popup menu via `button_feature_type`) to the Kotlin `DataDrivenBoundariesActivity`, achieving parity with the Java version's functionality.
- Implemented state management for toggling Locality, Administrative Area Level 1, and Country layers.
- Added dynamic styling logic to apply/remove styles based on layer visibility.
- Updated feature click handling for country selection, respecting layer activation state.
- **Miscellaneous Improvements:**
- Added distinct demo titles (`demo_title_java`, `demo_title_kotlin`) in `strings.xml` for better app identification.
- Updated resource references within Java/Kotlin activities for cleaner imports (e.g., `R.id...` instead of fully qualified names).
* chore: address various lint issues
* fix: explicitly bind checkboxes in the UI
---------
Co-authored-by: dkhawk <107309+dkhawk@users.noreply.github.com>
Google Maps Android API Demos
These are demos for the Maps SDK for Android and Maps SDK for Android V3 BETA libraries in the Java programming language.
They demonstrate most of the features available in the API.
The Maps SDK for Android samples can be found under the main gradle product
flavor, while the Maps SDK V3 BETA samples can be found under the v3 gradle
product flavor. The active product flavor can be modified through
Android Studio’s “Build Variants” toolbar options.
Pre-requisites
- Android API level 21+
- Latest Android Build Tools
- Google Repository
- Google Play Services
Getting Started
This sample use the Gradle build system.
First download the samples by cloning this repository or downloading an archived snapshot. (See the options at the top of the page.)
In Android Studio, use "Open an existing Android Studio project".
Next select the ApiDemos/java/ directory that you downloaded from this repository.
If prompted for a gradle configuration accept the default settings.
Alternatively use the gradlew build command to build the project directly.
This demo app requires that you add your own Google Maps API key. See Get an API key for more instructions.
Support
- Stack Overflow: https://stackoverflow.com/questions/tagged/android+google-maps
If you have discovered an issue with the Google Maps Android API v2, please see the resources here: https://developers.google.com/maps/documentation/android-api/support
If you've found an error in these samples, please file an issue: https://github.com/googlemaps/android-samples/issues
Patches are encouraged, and may be submitted according to the instructions in CONTRIBUTING.md.
License
Please refer to the LICENSE at the root of this repo.