* 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>
* feat: added material to samples
* feat: WIP
* feat: added material to samples
* feat: some more samples
* feat: base activity
* feat: some more samples
* fix: support devices with cutouts for DataDrivenDatasetStylingActivity.java demo
* fix: remove unnecessary 'res/' from paths in README.md file
* feat(apidemos): enhance DataDrivenBoundariesActivity UI and boundary selection
This commit enhances the DataDrivenBoundariesActivity demo with UI and
functionality improvements focusing on boundary type selection and visual
enhancements.
- Implements Material Design theming and UI elements.
- Adds boundary type selection via PopupMenu (Locality, Admin Area, Country).
- Refactors styling and implements persistent country selection.
- Handles system UI insets for improved display.
These changes improve the demo's user experience and code structure,
better showcasing data-driven boundary styling.
* feat(apidemos): configure dataset-specific zoom levels for datasets demo
This commit introduces dataset-specific zoom levels to the DataDrivenDatasetStylingActivity, enhancing the user experience when switching between datasets.
- Adds a `zoomLevel` field to the `DataSet` class to store the desired zoom level for each dataset.
- Updates the `dataSets` array to include appropriate zoom levels for Boulder, New York, and Kyoto datasets.
- Modifies the `centerMapOnLocation` method to accept a `zoomLevel` parameter, allowing it to be dynamically set.
- Updates the `switchDataSet` method to utilize the `zoomLevel` from the selected `DataSet` when centering the map, ensuring the map zooms to the optimal level for each dataset.
- Removes the previously hardcoded `ZOOM_LEVEL` constant, as the zoom level is now dataset-dependent.
These changes ensure that when a user selects a dataset, the map automatically zooms to a relevant level for that specific dataset, improving clarity and usability of the demo.
Also adds missing copyright header.
* fix: import rememberMarkerState and use the marker state correctly
* feat: dataset styling Kotlin samples
* feat: added DataDrivenBoundariesActivity.kt
* feat: added DataDrivenBoundariesActivity
* feat: added documentation
* feat: added header
* chore: changed MY_MAP_ID to DEMO_MAP_ID
* feat: moved data files to raw
* feat: added DataDrivenBoundariesActivity
* feat: removed unused files
* feat: map id
* chore: replace System.out.println with Log.d
* feat: added region tags
* feat: added different set of DDS
* feat: added different set of DDS
* feat: replacing files
feat: replacing files
* feat: replacing files
* feat: compileSdk 35
* feat: compileSdk 35
* chore: updated README file
* feat: trying to force different datasets
* feat: updated samples
* feat: Add data-driven styling for datasets
This commit introduces data-driven styling for datasets in the ApiDemos application.
The following changes were made:
Added a custom Application class (ApiDemoApplication) to check for the presence and validity of the API key during startup.
Added a new data structure (DataSet) to hold information about each dataset, including its label, dataset ID, location, and styling callback.
Updated the DataDrivenDatasetStylingActivity to use the new data structure and styling callbacks.
Rename the dataset input files to better reflect there contents.
* fix: moves the dataset ids to the secrets.properties file
* feat: significant rewrite to of DataDrivenDatasetStylingActivity
* Makes the app look better on full screen with a cutout
* Uses material elements
* Switch to using secrets for the data set ids
* more of a convenience to prevent having to remove the ids when submitting
* moves dataset data files to common area since they are not used directly by the app
* Detailed instructions for uploading the data to console (WIP)
* fix: exports the data driven styling activities so they can be run directly
* feat: added header
* feat: change ubuntu-latest
* feat: change ubuntu-latest
* feat: change ubuntu-latest
---------
Co-authored-by: dkhawk <107309+dkhawk@users.noreply.github.com>
Updates the following dependencies:
* compileSdk to 35
* androidx.core:core-ktx to 1.15.0
* org.jetbrains.kotlin:kotlin-stdlib-jdk7 to 2.0.21
* id("com.android.application") to 8.8.0
* id("org.jetbrains.kotlin.android") to 2.1.0
* Gradle to 8.11.1
* Also renames the savedState variable to savedInstanceState in AmbientActivity.kt and MainActivity.kt to match the base class.
* build: update Android to 35, kotlin to 2.0.21, lifecycle to 2.8.7
* chore: update snippets to target android-35. Update snippets libraries
* chore: Update minSdk to 23 for the snippets
Bitmaps served by this provider cause memory leaks after the map is destroyed. Narrowing the scope to a field allows it to be garbage collected and does not affect the provider/activity's ability to serve and render the custom tiles.
* Add dynamic key values to secrets.properties in idx template
Update idx template to read local.defaults.properties and
generate key entries in secrets.properties file using the
user's provided API key.
* Fix incorrect variable for key
Update key to be keyVar when writing to secrets.properties
* fix: remove newline from comment
Comment contained newline that made the template read the
filename as a command.
* Add dynamic key values to secrets.properties in idx template
Update idx template to read local.defaults.properties and
generate key entries in secrets.properties file using the
user's provided API key.
* Fix incorrect variable for key
Update key to be keyVar when writing to secrets.properties
* fix: import rememberMarkerState and use the marker state correctly
* fix: fixed secrets in wearable module
---------
Co-authored-by: dkhawk <107309+dkhawk@users.noreply.github.com>
* feat: copies some snippets that were in v3 only to gms
chore: the java compatibility version
* fix: updates copyright dates and adds missing copyright
* fix: copyright header for strings.xml
* fix: set Java Version back to 17
* fix: set Java Version back to 17
* fix: set Java Version back to 17
* fix: set Java Version back to 17
* fix: set Java Version back to 17
* feat: creates AdvancedMarkersCollisionActivity to demonstrate marker collision behavior
* chore: not adding jar files in libs directory
* feat: set Java 21 everywhere
---------
Co-authored-by: Enrique López Mañas <eenriquelopez@gmail.com>