Add geometry
Estimated reading time: 2 minutesCheck out this code sample that uses the MapLibre Android library to add a geometry from GeoJSON onto your map.
 
    
package io.jawg.example.maplibre
import android.app.Activity
import android.os.Bundle
import org.maplibre.android.MapLibre
import org.maplibre.android.maps.MapView
import org.maplibre.android.style.layers.LineLayer
import org.maplibre.android.style.layers.Property
import org.maplibre.android.style.layers.PropertyFactory
import org.maplibre.android.style.sources.GeoJsonSource
import org.maplibre.geojson.Feature
class GeometryMapActivity : Activity() {
    private lateinit var mapView: MapView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Get your access-token on the Lab: https://www.jawg.io/lab/access-tokens
        val accessToken = getString(R.string.jawg_access_token)
        val styleId = "jawg-dark"
        val styleUrl = "https://api.jawg.io/styles/$styleId.json?access-token=$accessToken"
        // Init MapLibre
        MapLibre.getInstance(this)
        // Then set the activity layout
        setContentView(R.layout.activity_geometry_map)
        // We get the map view to set its style with the desired Jawg URL.
        mapView = findViewById(R.id.mapView)
        mapView.onCreate(savedInstanceState)
        mapView.getMapAsync { map ->
            map.setStyle(styleUrl) { style ->
                // Once the style is loaded we create a GeoJSON polygon of Paris boundaries.
                val geojson =
                    """
                    {
                        "type": "Feature",
                        "properties": {},
                        "geometry": {
                            "type": "Polygon",
                            "coordinates": [
                                [
                                    [2.319887,48.90046],[2.329981,48.901163],
                                    [2.38515,48.902008],[2.394906,48.898444],
                                    [2.397627,48.894578],[2.398846,48.887109],
                                    [2.408308,48.880409],[2.41327,48.872892],
                                    [2.413838,48.864376],[2.416341,48.849234],
                                    [2.412246,48.834539],[2.422139,48.835798],
                                    [2.41939,48.842577],[2.42813,48.841528],
                                    [2.447699,48.844818],[2.463438,48.842089],
                                    [2.467426,48.838891],[2.467582,48.833133],
                                    [2.462696,48.81906],[2.458705,48.81714],
                                    [2.438448,48.818232],[2.421462,48.824054],
                                    [2.406032,48.827615],[2.390939,48.826079],
                                    [2.379296,48.821214],[2.363947,48.816314],
                                    [2.345958,48.816036],[2.331898,48.817011],
                                    [2.332461,48.818247],[2.292196,48.827142],
                                    [2.279052,48.83249],[2.272793,48.82792],
                                    [2.263174,48.83398],[2.255144,48.83481],
                                    [2.251709,48.838822],[2.250612,48.845555],
                                    [2.239978,48.849702],[2.224219,48.853517],
                                    [2.228225,48.865183],[2.231736,48.869069],
                                    [2.245678,48.876435],[2.25541,48.874264],
                                    [2.258467,48.880387],[2.277487,48.877968],
                                    [2.282327,48.883923],[2.291507,48.889472],
                                    [2.319887,48.90046]
                                ]
                            ]
                        }
                    }
                    """
                // Create feature object from the GeoJSON we declared.
                val parisBoundariesFeature = Feature.fromJson(geojson)
                // Create a GeoJson Source from our feature.
                val geojsonSource = GeoJsonSource("paris-boundaries", parisBoundariesFeature)
                // Add the source to the style
                style.addSource(geojsonSource)
                // Create a layer with the desired style for our source.
                val layer = LineLayer("paris-boundaries", "paris-boundaries")
                    .withProperties(
                        PropertyFactory.lineCap(Property.LINE_CAP_SQUARE),
                        PropertyFactory.lineJoin(Property.LINE_JOIN_MITER),
                        PropertyFactory.lineOpacity(0.7f),
                        PropertyFactory.lineWidth(4f),
                        PropertyFactory.lineColor("#0094ff")
                    )
                // Add the layer at the end
                style.addLayer(layer)
            }
        }
    }
    override fun onStart() {
        super.onStart()
        mapView.onStart()
    }
    override fun onResume() {
        super.onResume()
        mapView.onResume()
    }
    override fun onPause() {
        super.onPause()
        mapView.onPause()
    }
    override fun onStop() {
        super.onStop()
        mapView.onStop()
    }
    override fun onLowMemory() {
        super.onLowMemory()
        mapView.onLowMemory()
    }
    override fun onDestroy() {
        super.onDestroy()
        mapView.onDestroy()
    }
}