Mappedin SDK for iOS & Android v6.10.0

v6.10.0 - September 30, 2026

Packages

  • @mappedin/blue-dot: 6.29.0-beta.0
  • @mappedin/dynamic-focus: 6.29.0-beta.0
  • @mappedin/events: 6.29.0-beta.0
  • @mappedin/icons: 8.4.1
  • @mappedin/mappedin-js: 6.29.0

Features

  • Added MapView.auto, which places Labels for the map and renders Annotations as icon-only Labels. The returned AutoElements.markers list is empty. MapView.__EXPERIMENTAL__auto remains and still creates Markers for Annotations. It is deprecated.
mapView.auto { result ->
    result.onSuccess { elements ->
        Log.d("MapView", "Created ${elements.labels.size} labels")
    }
}
  • Added path rendering options on AddPathOptions, used by Paths.add and by NavigationOptions.pathOptions.
mapView.paths.add(
    directions.coordinates,
    AddPathOptions(
        geometry = AddPathOptions.Geometry.RIBBON,
        smoothing = AddPathOptions.Smoothing(tension = 0.15, cornerRadius = 0.5),
        border = AddPathOptions.Border(enabled = true, color = "darken"),
        endcapExtension = 0.5 to 0.5,
        billboarding = AddPathOptions.Billboarding.Threshold(80.0),
        dash = AddPathOptions.Dash(
            enabled = true,
            mode = AddPathOptions.Dash.Mode.WIDTH_SCALING,
            size = 1.2,
            gapSize = 0.6,
        ),
        xray = AddPathOptions.Xray(opacity = 0.25, tint = 0.3, dithering = 2.0),
    ),
)
  • geometry is AddPathOptions.Geometry.TUBE (the default round path) or AddPathOptions.Geometry.RIBBON (a flat path). A dashed ribbon draws each dash as its own shape. A dashed tube paints the dash pattern on one continuous path.

  • dash configures dashed paths. dash.enabled turns dashing on. dashed remains as the boolean switch. dash.cornerRadius ranges from 0 (sharp) to 1 (fully rounded) and defaults to 0. It applies to ribbon geometry. A dash with only enabled = true uses width-scaled dashes (size 1.2, gapSize 0.6). dash.mode is WIDTH_SCALING (the default), LENGTH_SCALING, or ABSOLUTE.

  • smoothing sets corner tension and cornerRadius in metres. It is separate from GetDirectionsOptions.smoothing, which simplifies the route.

  • xray sets how the path looks when it passes behind geometry: opacity, color, tint, and dithering.

  • endcapExtension, billboarding, and border apply to ribbon geometry. endcapExtension is a start and end pair in metres. A value above 0 extends the path and draws a rounded cap. 0 is a square end. The default is 0.5 to 0.5. billboarding is Off, On, or a Threshold in degrees from 0 to 90 (default 80).

  • Added method and includeDoorBufferNodes to GetDirectionsOptions.Smoothing.Configured. method is GREEDY_LOS (the default), RDP, or DP_OPTIMAL. includeDoorBufferNodes keeps door-adjacent nodes during simplification. It defaults to true for RDP and false for DP_OPTIMAL, and GREEDY_LOS ignores it. Existing smoothing defaults are unchanged. GetDirectionsOptions.Smoothing.WithRadius is deprecated. It still sets radius and enabled, and cannot set method or includeDoorBufferNodes.

mapData.getDirections(
    start,
    end,
    GetDirectionsOptions(
        smoothing = GetDirectionsOptions.Smoothing.Configured(
            enabled = true,
            method = GetDirectionsOptions.Smoothing.Method.DP_OPTIMAL,
            includeDoorBufferNodes = true,
            radius = 0.4,
        ),
    ),
) { result ->
    result.onSuccess { directions ->
        directions?.let { mapView.navigation.draw(it) }
    }
}
  • Added showAllFloorsIncludedInNavigation to MultiFloorViewOptions. When enabled, every floor a navigation Path traverses is rendered, including floors above the current floor on a descending route, so the Path and its vertical connection segments stay visible. The default is false.
mapView.show3dMap(
    Show3DMapOptions(
        multiFloorView = MultiFloorViewOptions(
            enabled = true,
            showAllFloorsIncludedInNavigation = true,
        ),
    ),
) { result ->
    result.onSuccess {
        Log.d("MapView", "Map shown")
    }
}
  • Added slopeEnabled, slopeBearing, and slopeFactor to GeometryUpdateState and GeometryState. When slopeEnabled is true, the top face tilts into a flat ramp along a compass bearing while the floor stays flat. slopeBearing is in degrees (0 is north, increasing clockwise). slopeFactor ranges from -1 to 1, where 0 is flat and 1 slopes down in the bearing direction.
mapView.updateState(
    space,
    GeometryUpdateState(
        height = 6.0,
        slopeEnabled = true,
        slopeBearing = 350.0,
        slopeFactor = 1.0,
    ),
)
  • Added opensMessage and closesMessage to OpeningHoursSpecification. These strings replace the displayed open or close time for special hours, such as “Hours may vary”. They appear on the entries in EnterpriseLocation.operationHours.raw and LocationProfile.openingHours.raw, and follow the active language.

  • Added fuzzy and prefix to Search.query and Search.suggest. On query, enterpriseCategories, enterpriseLocations, and places can each set their own values. On suggest, enterpriseLocations and places can set them. fuzzy of 0 disables typo tolerance. A value greater than 0 and less than 1 is a fraction of the term length. A value of 1 or greater is an edit count. The default is 0.2. prefix controls as-you-type matching and defaults to true. Omitting either option keeps the existing behaviour.

mapData.search.query(
    "coffee",
    Search.QueryOptions(
        enterpriseLocations = Search.QueryOptions.EnterpriseLocationOptions(
            fuzzy = 0.0,
            prefix = false,
        ),
    ),
) { result ->
    result.onSuccess { searchResult ->
        Log.d("Search", "Found ${searchResult?.locations?.size ?: 0} locations")
    }
}

Performance

  • Improved Label memory use on maps with many labels, including icon-only labels.

Fixes

  • Fixed an issue where MapData.checkForUpdates failed for a hydrated map that uses the EU gateway.
  • Fixed an issue where a two-finger pinch stopped working when the second finger landed on a layer above the map.
  • Fixed an issue where borders failed to render on geometry that contains a hole, and were missing on smooth outlines.
  • Fixed an issue where map data failed to load when a Node referenced a neighbor that was missing from the map.
  • Fixed an issue where the end of a Blue Dot tethered navigation Path disappeared when the route looped back near the user.
  • Fixed an issue where Labels with maxLines greater than 2 rendered only the first two lines.