陰影起伏
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"> <com.mapbox.mapboxsdk.maps.MapViewandroid:id="@id/mapView"android:layout_width="match_parent"android:layout_height="match_parent"app:mapbox_cameraTargetLat="46.133872"app:mapbox_cameraTargetLng="8.5274353171"app:mapbox_cameraZoom="7.10806931333"/> </FrameLayout>
HillShadeActivity.java
package com.mapbox.mapboxandroiddemo.examples.styles; import android.graphics.Color;import android.os.Bundle;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity; import com.mapbox.mapboxandroiddemo.R;import com.mapbox.mapboxsdk.Mapbox;import com.mapbox.mapboxsdk.maps.MapView;import com.mapbox.mapboxsdk.maps.MapboxMap;import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;import com.mapbox.mapboxsdk.maps.Style;import com.mapbox.mapboxsdk.style.layers.HillshadeLayer;import com.mapbox.mapboxsdk.style.sources.RasterDemSource; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.hillshadeHighlightColor;import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.hillshadeShadowColor; /*** Use terrain data to show hills and use runtime styling to style the hill shading.*/public class HillShadeActivity extends AppCompatActivity implementsOnMapReadyCallback { private MapView mapView;private static final String LAYER_ID = "hillshade-layer";private static final String SOURCE_ID = "hillshade-source";private static final String SOURCE_URL = "mapbox://mapbox.terrain-rgb";private static final String HILLSHADE_HIGHLIGHT_COLOR = "#008924"; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); // Mapbox access token is configured here. This needs to be called either in your application// object or in the same activity which contains the mapview.Mapbox.getInstance(this, getString(R.string.access_token)); // This contains the MapView in XML and needs to be called after the access token is configured.setContentView(R.layout.activity_style_hillshade); mapView = findViewById(R.id.mapView);mapView.onCreate(savedInstanceState);mapView.getMapAsync(this);} @Overridepublic void onMapReady(@NonNull final MapboxMap mapboxMap) { mapboxMap.setStyle(Style.OUTDOORS, new Style.OnStyleLoaded() {@Overridepublic void onStyleLoaded(@NonNull Style style) {// Add hillshade data source to mapRasterDemSource rasterDemSource = new RasterDemSource(SOURCE_ID, SOURCE_URL);style.addSource(rasterDemSource); // Create and style a hillshade layer to add to the mapHillshadeLayer hillshadeLayer = new HillshadeLayer(LAYER_ID, SOURCE_ID).withProperties(hillshadeHighlightColor(Color.parseColor(HILLSHADE_HIGHLIGHT_COLOR)),hillshadeShadowColor(Color.BLACK)); // Add the hillshade layer to the mapstyle.addLayerBelow(hillshadeLayer, "aerialway");}});} // Add the mapView lifecycle to the activity's lifecycle methods@Overridepublic void onResume() {super.onResume();mapView.onResume();} @Overrideprotected void onStart() {super.onStart();mapView.onStart();} @Overrideprotected void onStop() {super.onStop();mapView.onStop();} @Overridepublic void onPause() {super.onPause();mapView.onPause();} @Overridepublic void onLowMemory() {super.onLowMemory();mapView.onLowMemory();} @Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();} @Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}}