Skip to content

MapConductor/android-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MapConductor Android SDK

A unified mapping library that provides a common API for multiple map providers including Google Maps, Mapbox, HERE, and ArcGIS. Write once, deploy across all major mapping platforms.

Features

  • 🗺️ Multi-Provider Support: Seamlessly switch between Google Maps, Mapbox, HERE, and ArcGIS with a single API
  • 🎯 Unified Interface: Common abstractions for markers, circles, polylines, polygons, and ground overlays
  • ⚡ High Performance: Spatial indexing with hexagonal cells for efficient marker clustering
  • 🔄 Reactive State: Built on Kotlin StateFlow for reactive UI updates
  • 🎨 Jetpack Compose: Modern Android UI toolkit integration

Architecture

Module Structure

  • mapconductor-bom: Version managemenet
  • core: Core abstractions and shared functionality
  • for-googlemaps: Google Maps implementation
  • for-mapbox: Mapbox implementation
  • for-here: HERE Maps implementation
  • for-arcgis: ArcGIS implementation
  • icons: Reusable marker icon components
  • example-app: Comprehensive demo application

Key Components

  • MapViewController: Abstract controller interface for all map providers
  • MapViewBase: Generic Compose-based map view component
  • Overlay Managers: Separate managers for markers, circles, polylines, and polygons
  • Projection Utilities: WebMercator and WGS84 coordinate transformations
  • HexGeocell: Spatial indexing system for performance optimization

Quick Start

1. Setup

Clone the repository:

git clone https://github.com/MapConductor/android-sdk.git

Add secrets.properties to the project root from https://github.com/MapConductor/map-sdk-credentials/

2. Basic Usage

@Composable
fun MyMapScreen() {
    GoogleMapView(
        modifier = Modifier.fillMaxSize(),
        onMapReady = { controller ->
            // Add markers, circles, polylines, etc.
        }
    ) { mapState, controller ->
        // Your map content here
    }
}

3. Switch Map Providers

Simply change the map view component:

// Google Maps
GoogleMapView { /* ... */ }

// Mapbox
MapboxMapView { /* ... */ }

// HERE Maps
HereMapView { /* ... */ }

// ArcGIS
ArcGISMapView { /* ... */ }

Development

Building

./gradlew build

Code Style

This project follows KtLint conventions:

./gradlew allLintChecks

Feature Implementation Status

Google Maps Mapbox Here ArcGIS
Map
Marker
Circle
Polyline
Polygon
GroundImage N/A N/A N/A
RasterTileLayer
VectorTileLayer

Note that the click functionality of Polyline and Polygon classes are not implemented yet.

Releases

No releases published

Packages

 
 
 

Contributors 5

Languages