{"id":28491559,"url":"https://github.com/line/abc-kmm-h3","last_synced_at":"2025-07-19T22:04:17.222Z","repository":{"id":57726192,"uuid":"417353196","full_name":"line/abc-kmm-h3","owner":"line","description":"A library to convert Uber's H3 geo-index to LatLng vertices for Kotlin Multiplatform Mobile iOS and Android","archived":false,"fork":false,"pushed_at":"2023-03-20T22:43:10.000Z","size":1013,"stargazers_count":13,"open_issues_count":1,"forks_count":4,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-07-04T23:36:05.307Z","etag":null,"topics":["android","heatmap","ios","kmm","kotlin","map","multiplatform","uber-h3"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/line.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-15T03:08:16.000Z","updated_at":"2025-06-07T11:03:53.000Z","dependencies_parsed_at":"2022-09-17T13:41:34.196Z","dependency_job_id":null,"html_url":"https://github.com/line/abc-kmm-h3","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/line/abc-kmm-h3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/line%2Fabc-kmm-h3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/line%2Fabc-kmm-h3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/line%2Fabc-kmm-h3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/line%2Fabc-kmm-h3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/line","download_url":"https://codeload.github.com/line/abc-kmm-h3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/line%2Fabc-kmm-h3/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266026178,"owners_count":23866030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","heatmap","ios","kmm","kotlin","map","multiplatform","uber-h3"],"created_at":"2025-06-08T08:07:42.753Z","updated_at":"2025-07-19T22:04:17.159Z","avatar_url":"https://github.com/line.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![abc-kmm-h3: A library to convert Uber's H3 geo-index to LatLng vertices for Kotlin Multiplatform Mobile iOS and android](images/cover.png)\n\n[![Kotlin](https://img.shields.io/badge/kotlin-1.5.21-blue.svg?logo=kotlin)](http://kotlinlang.org)\n[![KMM](https://img.shields.io/badge/KMM-0.2.7-lightgreen.svg?logo=KMM)](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile)\n[![AGP](https://img.shields.io/badge/AGP-7.0.1-green.svg?logo=AGP)](https://developer.android.com/studio/releases/gradle-plugin)\n[![Gradle](https://img.shields.io/badge/Gradle-7.0.2-blue.svg?logo=Gradle)](https://gradle.org)\n[![Platform](https://img.shields.io/badge/platform-ios,android-lightgray.svg?style=flat)](https://img.shields.io/badge/platform-ios-lightgray.svg?style=flat)\n\nA library to convert Uber's H3 geo-index to LatLng vertices for Kotlin Multiplatform Mobile iOS and android\n\n## Features\n- Uber H3 in one interface\n- Common interface available on KMM Shared\n\n## Requirements\n- iOS\n   - Deployment Target 9.0 or higher\n- Android\n   - minSdkVersion 21\n\n## Installation\n\n### Gradle Settings\n\nAdd this gradle settings into your `KMP(Kotlin Multiplatform Project)`\n\n#### build.gradle.kts in shared\n\n```kotlin\n\nplugins {\n    id(\"com.android.library\")\n    kotlin(\"multiplatform\")\n}\n\nval h3Lib = \"com.linecorp.abc:kmm-h3:0.1.7\"\n\nkotlin {\n    android()\n    ios {\n        binaries\n            .filterIsInstance\u003cFramework\u003e()\n            .forEach {\n                it.baseName = \"shared\"\n                it.transitiveExport = true\n                it.export(h3Lib)\n            }\n    }\n\n    sourceSets {\n        val commonMain by getting {\n            dependencies {\n                implementation(h3Lib)\n            }\n        }\n        val commonTest by getting {\n            dependencies {\n                implementation(kotlin(\"test-common\"))\n                implementation(kotlin(\"test-annotations-common\"))\n            }\n        }\n        val androidMain by getting {\n            dependencies {\n                implementation(h3Lib)\n                api(h3Lib)\n            }\n        }\n        val androidTest by getting {\n            dependencies {\n                implementation(kotlin(\"test-junit\"))\n                implementation(\"junit:junit:4.13.2\")\n                implementation(\"androidx.test:core:1.0.0\")\n                implementation(\"androidx.test:runner:1.1.0\")\n                implementation(\"org.robolectric:robolectric:4.2\")\n            }\n        }\n        val iosMain by getting {\n            dependencies {\n                implementation(h3Lib)\n                api(h3Lib)\n            }\n        }\n        val iosTest by getting\n    }\n}\n```\n\n### Project Settings\n\nAndroid\n- Copy and paste `jniLibs` folder into src/main in your project\n\niOS\n- Cocoapods\n\n1. Create `Podfile` with below setting in your project root.\n\n    ```bash\n    use_frameworks!\n\n    platform :ios, '9.0'\n\n    install! 'cocoapods', :deterministic_uuids =\u003e false\n\n    target 'iosApp' do\n        pod 'shared', :path =\u003e '../shared/'\n    end\n    ```\n\n2. Run command `pod install` on the terminal\n\n## Usage\n\n### Get Geo Boundaries\n\nAndroid\n```kotlin\nval h3Indexes = listOf(\n    \"87283082bffffff\",\n    \"872830870ffffff\",\n    \"872830820ffffff\",\n    \"87283082effffff\",\n)\nval polygons = H3.polygons(h3Indexes)\n\n/*\n[Polygon(h3Index=87283082bffffff, vertices=[LatLng(lat=37.78529347359727, lng=-122.41077092287513), LatLng(lat=37.79707086149341, lng=-122.40326874464051), LatLng(lat=37.80760100422449, lng=-122.41208776737979), ...\n*/\n```\n\niOS\n```swift\nlet h3Indexes = [\n    \"87283082bffffff\",\n    \"872830870ffffff\",\n    \"872830820ffffff\",\n    \"87283082effffff\",\n]\n\nlet polygons = H3.Companion().polygons(h3Indexes: h3Indexes)\n\nprint(\"polygons\", polygons)\n\n/*\n[Polygon(h3Index=87283082bffffff, vertices=[LatLng(lat=37.78529347359727, lng=-122.41077092287512), LatLng(lat=37.79707086149341, lng=-122.4032687446405), LatLng(lat=37.80760100422449, lng=-122.41208776737977), ...\n*/\n```\n\n## TODO\n- [x] Get Geo Boundaries\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fline%2Fabc-kmm-h3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fline%2Fabc-kmm-h3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fline%2Fabc-kmm-h3/lists"}