Skip to content

Conversation

dkhawk
Copy link
Collaborator

@dkhawk dkhawk commented May 27, 2025

This commit introduces a new "Trails" sample to the AdvancedMaps3DSamples app.

Key features and changes:

  • Trails Data Model: Defines data classes (Trail, TrailType, DifficultyLevel, DogRegulation, TrailStatus) to represent trail information.
  • GeoJSON Parsing: Implements TrailsRepository to read and parse GeoJSON data containing trail information. Includes logic for:
    • Reading from an asset file.
    • Parsing GeoJSON features, properties (including specific OSMP attributes), and LineString geometries.
    • Simplifying trail coordinates using simplify() from com.google.maps.android.ktx.utils.
    • Calculating the LatLngBounds of all trails.
  • Polyline Rendering:
    • Adds Mappers.kt with a toPolylineOptions() extension function to convert Trail objects into PolylineOptions.
    • Colors polylines based on trail difficulty (Easy: Green, Moderate: Blue, Difficult: Red).
    • Sets altitudeMode to CLAMP_TO_GROUND and drawsOccludedSegments to true.
  • Trails UI:
    • Creates TrailsActivity, TrailsViewModel, and associated composables (MapScreen, LoadingScreen).
    • The TrailsViewModel loads trail data, creates Map3DOptions centered on the trails' boundary, and adds polylines to the map.
    • Displays a loading indicator while data is being fetched.
    • Integrates the ThreeDMap composable for displaying the map.
  • Common Map Composable: Refactors ThreeDMap.kt from the scenarios package to the common package to be reused.
  • ViewModel Enhancements:
    • Modifies Map3dViewModel to use MutableSharedFlow with replay for currentCamera to ensure observers get the latest value upon subscription.
    • Makes activeMapObjects in Map3dViewModel internal for access within the module.
  • MainActivity Update: Adds the "OSMP Trails -- polyline demo" sample to the main list.
  • Manifest and Resources: Updates AndroidManifest.xml to include TrailsActivity and adds a new string resource for the sample title.

This commit introduces a new "Trails" sample to the AdvancedMaps3DSamples app.

Key features and changes:

-   **Trails Data Model:** Defines data classes (`Trail`, `TrailType`, `DifficultyLevel`, `DogRegulation`, `TrailStatus`) to represent trail information.
-   **GeoJSON Parsing:** Implements `TrailsRepository` to read and parse GeoJSON data containing trail information. Includes logic for:
    -   Reading from an asset file.
    -   Parsing GeoJSON features, properties (including specific OSMP attributes), and LineString geometries.
    -   Simplifying trail coordinates using `simplify()` from `com.google.maps.android.ktx.utils`.
    -   Calculating the `LatLngBounds` of all trails.
-   **Polyline Rendering:**
    -   Adds `Mappers.kt` with a `toPolylineOptions()` extension function to convert `Trail` objects into `PolylineOptions`.
    -   Colors polylines based on trail difficulty (Easy: Green, Moderate: Blue, Difficult: Red).
    -   Sets `altitudeMode` to `CLAMP_TO_GROUND` and `drawsOccludedSegments` to true.
-   **Trails UI:**
    -   Creates `TrailsActivity`, `TrailsViewModel`, and associated composables (`MapScreen`, `LoadingScreen`).
    -   The `TrailsViewModel` loads trail data, creates `Map3DOptions` centered on the trails' boundary, and adds polylines to the map.
    -   Displays a loading indicator while data is being fetched.
    -   Integrates the `ThreeDMap` composable for displaying the map.
-   **Common Map Composable:** Refactors `ThreeDMap.kt` from the `scenarios` package to the `common` package to be reused.
-   **ViewModel Enhancements:**
    -   Modifies `Map3dViewModel` to use `MutableSharedFlow` with replay for `currentCamera` to ensure observers get the latest value upon subscription.
    -   Makes `activeMapObjects` in `Map3dViewModel` internal for access within the module.
-   **MainActivity Update:** Adds the "OSMP Trails -- polyline demo" sample to the main list.
-   **Manifest and Resources:** Updates `AndroidManifest.xml` to include `TrailsActivity` and adds a new string resource for the sample title.
@dkhawk dkhawk marked this pull request as draft May 27, 2025 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant