[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93477":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":20,"readmeContent":21,"aiSummary":9,"trendingCount":16,"starSnapshotCount":16,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},93477,"maplibre-native","maplibre\u002Fmaplibre-native","maplibre","MapLibre Native - Interactive vector tile maps for iOS, Android and other platforms.",null,"https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native","C++",2085,558,54,477,0,57.24,false,"main","2026-07-22 04:02:09","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F7ff2cda8-f564-4e70-a971-d34152f969f0#gh-light-mode-only\" alt=\"MapLibre Logo\" width=\"200\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fcee8376b-9812-40ff-91c6-2d53f9581b83#gh-dark-mode-only\" alt=\"MapLibre Logo\" width=\"200\">\n\u003C\u002Fp>\n\n# MapLibre Native\n\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002Fmaplibre\u002Fmaplibre-native\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=8ZQRRY56ZA)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002Fmaplibre\u002Fmaplibre-native) [![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSlack-%23maplibre--native-2EB67D?logo=slack)](https:\u002F\u002Fslack.openstreetmap.us\u002F)\n\nMapLibre Native is a free and open-source library for publishing maps in your apps and desktop applications on various platforms. Fast displaying of maps is possible thanks to GPU-accelerated vector tile rendering.\n\nThis project originated as a fork of Mapbox GL Native, before their switch to a non-OSS license in December 2020. For more information, see: [`FORK.md`](.\u002FFORK.md).\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F649392\u002F211550776-8779041a-7c12-4bed-a7bd-c2ec80af2b29.png\" alt=\"Android device with MapLibre\" width=\"24%\">   \u003Cimg src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F649392\u002F211550762-0f42ebc9-05ab-4d89-bd59-c306453ea9af.png\" alt=\"iOS device with MapLibre\" width=\"25%\">\n\u003C\u002Fp>\n\n## Getting Started\n\n### Android\n\nAdd [the latest version](https:\u002F\u002Fcentral.sonatype.com\u002Fartifact\u002Forg.maplibre.gl\u002Fandroid-sdk\u002Fversions) of MapLibre Native Android as a dependency to your project.\n\n```gradle\n    dependencies {\n        ...\n        implementation 'org.maplibre.gl:android-sdk:11.11.0'\n        ...\n    }\n```\n\nAdd a `MapView` to your layout XML file:\n\n```xml\n\u003Corg.maplibre.android.maps.MapView\n    android:id=\"@+id\u002FmapView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    \u002F>\n```\n\n> [!TIP]\n> There are external projects such as [Ramani Maps](https:\u002F\u002Fgithub.com\u002Framani-maps\u002Framani-maps) and [MapLibre Compose Playground](https:\u002F\u002Fgithub.com\u002FRallista\u002Fmaplibre-compose-playground) available to integrate MapLibre Native Android with Compose-based projects.\n\nNext, initialize the map in an activity:\n\n\u003Cdetails>\u003Csummary>Show code\u003C\u002Fsummary>\n\n```kotlin\nimport androidx.appcompat.app.AppCompatActivity\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport org.maplibre.android.MapLibre\nimport org.maplibre.android.camera.CameraPosition\nimport org.maplibre.android.geometry.LatLng\nimport org.maplibre.android.maps.MapView\nimport org.maplibre.android.testapp.R\n\nclass MainActivity : AppCompatActivity() {\n\n    \u002F\u002F Declare a variable for MapView\n    private lateinit var mapView: MapView\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        \u002F\u002F Init MapLibre\n        MapLibre.getInstance(this)\n\n        \u002F\u002F Init layout view\n        val inflater = LayoutInflater.from(this)\n        val rootView = inflater.inflate(R.layout.activity_main, null)\n        setContentView(rootView)\n\n        \u002F\u002F Init the MapView\n        mapView = rootView.findViewById(R.id.mapView)\n        mapView.getMapAsync { map ->\n            map.setStyle(\"https:\u002F\u002Fdemotiles.maplibre.org\u002Fstyle.json\")\n            map.cameraPosition = CameraPosition.Builder().target(LatLng(0.0,0.0)).zoom(1.0).build()\n        }\n    }\n\n    override fun onStart() {\n        super.onStart()\n        mapView.onStart()\n    }\n\n    override fun onResume() {\n        super.onResume()\n        mapView.onResume()\n    }\n\n    override fun onPause() {\n        super.onPause()\n        mapView.onPause()\n    }\n\n    override fun onStop() {\n        super.onStop()\n        mapView.onStop()\n    }\n\n    override fun onLowMemory() {\n        super.onLowMemory()\n        mapView.onLowMemory()\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n        mapView.onDestroy()\n    }\n\n    override fun onSaveInstanceState(outState: Bundle) {\n        super.onSaveInstanceState(outState)\n        mapView.onSaveInstanceState(outState)\n    }\n}\n```\n\u003C\u002Fdetails>\n\nFor more information, refer to the [Android API Documentation](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fandroid\u002Fapi\u002F) or the [Android Examples Documentation](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fandroid\u002Fexamples\u002Fgetting-started\u002F).\n\n## iOS\n\nYou can find MapLibre Native iOS on [Cocoapods](https:\u002F\u002Fcocoapods.org\u002F) and on the [Swift Package Index](https:\u002F\u002Fswiftpackageindex.com\u002Fmaplibre\u002Fmaplibre-gl-native-distribution). You can also add MapLibre Native iOS [as a dependency to Xcode directly](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fios\u002Flatest\u002Fdocumentation\u002Fmaplibre-native-for-ios\u002Fgettingstarted\u002F#Add-MapLibre-Native-as-a-dependency).\n\nMapLibre Native iOS uses UIKit. To integrate it with an UIKit project, you can use\n\n```swift\nclass SimpleMap: UIViewController, MLNMapViewDelegate {\n    var mapView: MLNMapView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        mapView = MLNMapView(frame: view.bounds)\n        mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n        view.addSubview(mapView)\n        mapView.delegate = self\n    }\n\n    func mapView(_: MLNMapView, didFinishLoading _: MLNStyle) {\n    }\n}\n```\n\nYou need to create a wrapper when using SwiftUI.\n\n```swift\nimport MapLibre\n\nstruct SimpleMap: UIViewRepresentable {\n    func makeUIView(context _: Context) -> MLNMapView {\n        let mapView = MLNMapView()\n        return mapView\n    }\n\n    func updateUIView(_: MLNMapView, context _: Context) {}\n}\n```\n\n> [!TIP]\n> You can also use [MapLibreSwiftUI](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fswiftui-dsl), a wrapper around MapLibre Native iOS that offers a declarative API like SwiftUI.\n\nThe [iOS Documentation](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fios\u002Flatest\u002Fdocumentation\u002Fmaplibre\u002F) contains many examples and the entire API of the library.\n\n## Node.js\n\nThere is an [npm package](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@maplibre\u002Fmaplibre-gl-native) for using MapLibre Native in a Node.js project. The source code of this project [can be found in this repository](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native\u002Ftree\u002Fmain\u002Fplatform\u002Fnode).\n\n## Qt\n\nPlease check out the [`maplibre\u002Fmaplibre-native-qt` repository](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native-qt) to learn how to integrate MapLibre Native with a Qt project.\n\n## Compose Multiplatform\n\n[MapLibre Compose](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-compose) wraps MapLibre Native for various platforms that [Compose Multiplatform](https:\u002F\u002Fwww.jetbrains.com\u002Fcompose-multiplatform\u002F) supports. As of August 2025, iOS and Android are supported, with web and desktop partially supported.\n\n## Other Platforms\n\nMapLibre Native can also be built on [Linux](platform\u002Flinux\u002FREADME.md), [Windows](platform\u002Fwindows\u002FREADME.md) and [macOS](platform\u002Fmacos\u002FREADME.md).\n\n## Contributing\n\n> [!NOTE]\n> This section is only relevant for people who want to contribute to MapLibre Native.\n\nMapLibre Native has at its core a C++ library. This is where the bulk of development is currently happening.\n\nTo get started with the code base, you need to clone the repository including all its submodules.\n\nAll contributors use pull requests from a private fork. [Fork the project](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native\u002Ffork). Then run:\n\n```bash\ngit clone --recurse-submodules git@github.com:\u003CYOUR NAME>\u002Fmaplibre-native.git\ngit remote add origin https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native.git\n```\n\nThe go-to reference is the [MapLibre Native Developer Documentation](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fdocs\u002Fbook\u002F).\n\n> [!TIP]\n> Check out issues labelled as a [good first issue](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native\u002Fissues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).\n\n### Core\n\n- [`CONTRIBUTING.md`](CONTRIBUTING.md)\n- [GitHub Wiki](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-native\u002Fwiki): low-friction way to share information with the community\n- [Core C++ API Documentation](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fcpp\u002Fapi\u002F) (unstable)\n\n### Android\n\nOpen `platform\u002Fandroid` with Android Studio.\n\nMore information: [MapLibre Android Developer Guide](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fdocs\u002Fbook\u002Fplatforms\u002Fandroid\u002Findex.html).\n\n### iOS\n\nYou need to use [Bazel](https:\u002F\u002Fbazel.build\u002F) to generate an Xcode project. Install [`bazelisk`](https:\u002F\u002Fformulae.brew.sh\u002Fformula\u002Fbazelisk) (a wrapper that installs the required Bazel version). Next, use:\n\n```bash\nbazel run \u002F\u002Fplatform\u002Fios:xcodeproj --@rules_xcodeproj\u002F\u002Fxcodeproj:extra_common_flags=\"--\u002F\u002F:renderer=metal\"\nxed platform\u002Fios\u002FMapLibre.xcodeproj\n```\n\nTo generate and open the Xcode project.\n\nMore information: [MapLibre iOS Developer Guide](https:\u002F\u002Fmaplibre.org\u002Fmaplibre-native\u002Fdocs\u002Fbook\u002Fplatforms\u002Fios\u002Findex.html).\n\n## Other Platforms\n\nSee [`\u002Fplatform`](\u002Fplatform) and navigate to the platform you are interested in for more information.\n\n## Getting Involved\n\nJoin the `#maplibre-native` Slack channel at OSMUS. Get an invite at https:\u002F\u002Fslack.openstreetmap.us\u002F\n\n### Become a Sponsor 💰\n\nWe thank everyone who supported us financially in the past and special thanks to the people and organizations who support us with recurring donations!\n\nRead more about the MapLibre Sponsorship Program at [https:\u002F\u002Fmaplibre.org\u002Fsponsors\u002F](https:\u002F\u002Fmaplibre.org\u002Fsponsors\u002F).\n\nGold:\n\n\u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fmsft-logo.svg\" alt=\"Logo Microsoft\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Flocation\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Faws-logo.svg\" alt=\"Logo AWS\" width=\"25%\"\u002F>\u003C\u002Fa>\n\nSilver:\n\n\u003Ca href=\"https:\u002F\u002Fwww.mierune.co.jp\u002F?lang=en\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fmierune-logo.svg\" alt=\"Logo MIERUNE\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fkomoot.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fkomoot-logo.svg\" alt=\"Logo komoot\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.jawg.io\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fjawgmaps-logo.svg\" alt=\"Logo JawgMaps\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.radar.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fradar-logo.svg\" alt=\"Logo Radar\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.mapme.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fmapme-logo.svg\" alt=\"Logo mapme\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.maptiler.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fmaptiler-logo.svg\" alt=\"Logo maptiler\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.caltopo.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fcaltopo-logo.svg\" alt=\"Logo CalTopo\" width=\"25%\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.caltopo.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fmaplibre.org\u002Fimg\u002Fsmartmaps-logo.svg\" alt=\"Logo SmartMaps\" width=\"25%\"\u002F>\u003C\u002Fa>\n\nBackers and Supporters:\n\n[![](https:\u002F\u002Fopencollective.com\u002Fmaplibre\u002Fbackers.svg?avatarHeight=50&width=600)](https:\u002F\u002Fopencollective.com\u002Fmaplibre)\n\n## License\n\n**MapLibre Native** is licensed under the [BSD 2-Clause License](.\u002FLICENSE.md).\n",2,"2026-07-19 02:30:06","trending"]