Я хочу изменить mapType или сделать что-то другое с картой в моей основной деятельности с опциейMenu, как на фото:
Мое приложение с опциейItem
MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_relative_layout);
Toolbar toolbar = findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(Color.rgb(60, 99, 130));
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = findViewById(R.id.tabs);
tabs.setupWithViewPager(viewPager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.vue_satellite:
Toast.makeText(this, "Hi", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
FontaineActivity.java (фрагмент карты Google):
public class FontaineActivity extends Fragment implements OnMapReadyCallback {
private GoogleMap mMap;
private Location currentLocation;
private FusedLocationProviderClient fusedLocationClient;
private static final int REQUEST_CODE = 101;
private LatLng escargots0 = new LatLng(47.473329,-0.545088);
private LatLng garenne1 = new LatLng(47.477132,-0.577087);
private LatLng quaiLigny2 = new LatLng(47.471931,-0.557854);
private LatLng Lycee3 = new LatLng(47.472784, -0.556277);
private float [] results = new float[1];
private int [] distances = new int[4];
private int minVal;
private int index;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_fontaine, container, false);
FloatingActionButton fabClosestFontaine = view.findViewById(R.id.fab);
fabClosestFontaine.setTranslationY(-100);
fabClosestFontaine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (index){
case 0 :
Toast.makeText(getContext(), "Distance : " + minVal + " m",Toast.LENGTH_LONG).show();
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(escargots0,15));
break;
case 1 :
Toast.makeText(getContext(), "Distance : " + minVal + " m",Toast.LENGTH_LONG).show();
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(garenne1,15));
break;
case 2 :
Toast.makeText(getContext(), "Distance : " + minVal + " m",Toast.LENGTH_LONG).show();
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(quaiLigny2,15));
break;
case 3 :
Toast.makeText(getContext(), "Distance : " + minVal + " m",Toast.LENGTH_LONG).show();
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(Lycee3,15));
break;
}
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(Objects.requireNonNull(getActivity()));
fetchLastLocation();
}
private void fetchLastLocation() {
if (ActivityCompat.checkSelfPermission(Objects.requireNonNull(getActivity()), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Objects.requireNonNull(getContext()), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[]
{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE);
return;
}
Task<Location> task = fusedLocationClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
currentLocation = location;
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.fontaine_map);
assert mapFragment != null;
mapFragment.getMapAsync(FontaineActivity.this);
}
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng latLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());
MarkerOptions markerOptions = new MarkerOptions().position(latLng)
.title("Good water !");
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,13));
googleMap.addMarker(markerOptions);
Location.distanceBetween(latLng.latitude, latLng.longitude, escargots0.latitude, escargots0.longitude, results );
distances [0] = (int) results [0];
Location.distanceBetween(latLng.latitude, latLng.longitude, garenne1.latitude, garenne1.longitude, results );
distances [1] = (int) results [0];
Location.distanceBetween(latLng.latitude, latLng.longitude, quaiLigny2.latitude, quaiLigny2.longitude, results );
distances [2] = (int) results [0];
Location.distanceBetween(latLng.latitude, latLng.longitude, Lycee3.latitude, Lycee3.longitude, results );
distances [3] = (int) results [0];
mMap.addMarker(new MarkerOptions().position(escargots0).title("Aux escargots").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).snippet("Distance : " + distances[0] + "m"));
mMap.addMarker(new MarkerOptions().position(garenne1).title("Entrée Parc de la Garenne").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).snippet("Distance : " + distances[1] + "m"));
mMap.addMarker(new MarkerOptions().position(quaiLigny2).title("Fontaines Quai Ligny").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).snippet("Distance : " + distances[2] + "m"));
mMap.addMarker(new MarkerOptions().position(Lycee3).title("Au lycée").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).snippet("Distance : " + distances[3] + "m"));
minVal = minimum();
index = getArrayIndex(distances,minVal);
}
private int minimum(){
int j = distances[0];
for (int distance : distances) {
if (distance < j) {
j = distance;
}
}
return j;
}
private int getArrayIndex(int[] arr,int value) {
int k=0;
for(int i=0;i<arr.length;i++){
if(arr[i]==value){
k=i;
break;
}
}
return k;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
fetchLastLocation();
}
}
}
}
Поэтому я хочу изменить тост с надписью "Hi" на onOptionsItemSelected в MainActivity.java с помощью ".setMapType", чтобы изменить карту в FontaineActivity.java, когда есть щелчок на optionItem.Спасибо