package com.mapbox.mapboxsdk.testapp.activity.location; import android.annotation.SuppressLint; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.mapbox.android.core.permissions.PermissionsListener; import com.mapbox.android.core.permissions.PermissionsManager; import com.mapbox.mapboxsdk.location.LocationComponent; import com.mapbox.mapboxsdk.location.modes.RenderMode; 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.testapp.R; import java.util.List; public class LocationMapChangeActivity extends AppCompatActivity implements OnMapReadyCallback { private MapView mapView; private MapboxMap mapboxMap; private PermissionsManager permissionsManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location_layer_map_change); mapView = findViewById(R.id.mapView); FloatingActionButton stylesFab = findViewById(R.id.fabStyles); stylesFab.setOnClickListener(v -> { if (mapboxMap != null) { mapboxMap.setStyle(new Style.Builder().fromUrl(Utils.getNextStyle())); } }); mapView.onCreate(savedInstanceState); if (PermissionsManager.areLocationPermissionsGranted(this)) { mapView.getMapAsync(this); } else { permissionsManager = new PermissionsManager(new PermissionsListener() { @Override public void onExplanationNeeded(List permissionsToExplain) { Toast.makeText(LocationMapChangeActivity.this, "You need to accept location permissions.", Toast.LENGTH_SHORT).show(); } @Override public void onPermissionResult(boolean granted) { if (granted) { mapView.getMapAsync(LocationMapChangeActivity.this); } else { finish(); } } }); permissionsManager.requestLocationPermissions(this); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override public void onMapReady(@NonNull MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; mapboxMap.setStyle(new Style.Builder().fromUrl(Utils.getNextStyle()), style -> activateLocationComponent()); } @SuppressLint("MissingPermission") private void activateLocationComponent() { LocationComponent locationComponent = mapboxMap.getLocationComponent(); locationComponent.onStart(); locationComponent.activateLocationComponent(this); locationComponent.setLocationComponentEnabled(true); locationComponent.setRenderMode(RenderMode.COMPASS); locationComponent.addOnLocationClickListener( () -> Toast.makeText(this, "Location clicked", Toast.LENGTH_SHORT).show()); locationComponent.addOnLocationLongClickListener( () -> Toast.makeText(this, "Location long clicked", Toast.LENGTH_SHORT).show()); } @Override protected void onStart() { super.onStart(); mapView.onStart(); } @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onStop() { super.onStop(); mapView.onStop(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override public void onLowMemory() { super.onLowMemory(); mapView.onLowMemory(); } }