
To set map type, call the setMapType() method og GoogleMap object.
Modify from the example "Display "Legal Notices" for Google Maps Android API v2 on Options Menu":
Edit menu/activity_main.xml to add options for map type
<?xml version="1.0" encoding="utf-8"?>
<menu 
 >
 <item
 android_id="@+id/menu_about"
 android_orderInCategory="100"
 app_showAsAction="ifRoom"
 android_title="@string/menu_about"/>
 <item
 android_id="@+id/maptype"
 android_orderInCategory="100"
 app_showAsAction="never"
 android_title="Map Type...">
 <menu >
 <group android_id="@+id/groupmaptype"
 android_checkableBehavior="single">
 <item android_id="@+id/maptypeNORMAL"
 android_title="NORMAL" />
 <item android_id="@+id/maptypeSATELLITE"
 android_title="SATELLITE" />
 <item android_id="@+id/maptypeTERRAIN"
 android_title="TERRAIN" />
 <item android_id="@+id/maptypeHYBRID"
 android_title="HYBRID" />
 <item android_id="@+id/maptypeNONE"
 android_title="NONE" />
 </group>
 </menu>
 </item>
 <item
 android_id="@+id/menu_legalnotices"
 android_orderInCategory="100"
 app_showAsAction="never"
 android_title="@string/menu_legalnotices"/>
</menu>
Edit MapsActivity.java to call mMap.setMapType() once users selected.
package com.blogspot.android_er.androidstudiomapapp;
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.Menu;
 import android.view.MenuItem;
 import com.google.android.gms.common.GoogleApiAvailability;
 import com.google.android.gms.maps.CameraUpdateFactory;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.OnMapReadyCallback;
 import com.google.android.gms.maps.SupportMapFragment;
 import com.google.android.gms.maps.model.LatLng;
 import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
 private GoogleMap mMap;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_maps);
 // Obtain the SupportMapFragment and get notified when the map is ready to be used.
 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
 .findFragmentById(R.id.map);
 mapFragment.getMapAsync(this);
 }
 /**
 * Manipulates the map once available.
 * This callback is triggered when the map is ready to be used.
 * This is where we can add markers or lines, add listeners or move the camera. In this case,
 * we just add a marker near Sydney, Australia.
 * If Google Play services is not installed on the device, the user will be prompted to install
 * it inside the SupportMapFragment. This method will only be triggered once the user has
 * installed Google Play services and returned to the app.
 */
 @Override
 public void onMapReady(GoogleMap googleMap) {
 mMap = googleMap;
 // Add a marker in Sydney and move the camera
 LatLng sydney = new LatLng(-34, 151);
 mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
 mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 getMenuInflater().inflate(R.menu.activity_main, menu);
 return super.onCreateOptionsMenu(menu);
 }
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.maptypeHYBRID:
 if(mMap != null){
 mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
 return true;
 }
 case R.id.maptypeNONE:
 if(mMap != null){
 mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
 return true;
 }
 case R.id.maptypeNORMAL:
 if(mMap != null){
 mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
 return true;
 }
 case R.id.maptypeSATELLITE:
 if(mMap != null){
 mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
 return true;
 }
 case R.id.maptypeTERRAIN:
 if(mMap != null){
 mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
 return true;
 }
 case R.id.menu_legalnotices:
 String LicenseInfo = GoogleApiAvailability
 .getInstance()
 .getOpenSourceSoftwareLicenseInfo(MapsActivity.this);
 AlertDialog.Builder LicenseDialog =
 new AlertDialog.Builder(MapsActivity.this);
 LicenseDialog.setTitle("Legal Notices");
 LicenseDialog.setMessage(LicenseInfo);
 LicenseDialog.show();
 return true;
 case R.id.menu_about:
 AlertDialog.Builder aboutDialogBuilder =
 new AlertDialog.Builder(MapsActivity.this);
 aboutDialogBuilder.setTitle("About Me")
 .setMessage("http://android-er.blogspot.com");
 aboutDialogBuilder.setPositiveButton("visit",
 new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
 String url = "http://android-er.blogspot.com";
 Intent i = new Intent(Intent.ACTION_VIEW);
 i.setData(Uri.parse(url));
 startActivity(i);
 }
 });
 aboutDialogBuilder.setNegativeButton("Dismiss",
 new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
 dialog.cancel();
 }
 });
 AlertDialog aboutDialog = aboutDialogBuilder.create();
 aboutDialog.show();
 return true;
 }
 return super.onOptionsItemSelected(item);
 }
}
~ Step-by-step of Android Google Maps Activity using Google Maps Android API v2, on Android Studio.
0 comments:
Post a Comment