/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.mapdemo; import static com.google.android.gms.maps.GoogleMap.MAP_TYPE_HYBRID; import static com.google.android.gms.maps.GoogleMap.MAP_TYPE_NORMAL; import static com.google.android.gms.maps.GoogleMap.MAP_TYPE_SATELLITE; import static com.google.android.gms.maps.GoogleMap.MAP_TYPE_TERRAIN; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.Spinner; import android.widget.Toast; /** * Demonstrates the different base layers of a map. */ public class LayersDemoActivity extends FragmentActivity implements OnItemSelectedListener { private GoogleMap mMap; private CheckBox mTrafficCheckbox; private CheckBox mMyLocationCheckbox; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layers_demo); Spinner spinner = (Spinner) findViewById(R.id.layers_spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.layers_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); mTrafficCheckbox = (CheckBox) findViewById(R.id.traffic); mMyLocationCheckbox = (CheckBox) findViewById(R.id.my_location); setUpMapIfNeeded(); } @Override protected void onResume() { super.onResume(); setUpMapIfNeeded(); if (mMap != null) { updateTraffic(); updateMyLocation(); } } private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); } } private boolean checkReady() { if (mMap == null) { Toast.makeText(this, R.string.map_not_ready, Toast.LENGTH_SHORT).show(); return false; } return true; } /** * Called when the Traffic checkbox is clicked. */ public void onTrafficToggled(View view) { updateTraffic(); } private void updateTraffic() { if (!checkReady()) { return; } mMap.setTrafficEnabled(mTrafficCheckbox.isChecked()); } /** * Called when the MyLocation checkbox is clicked. */ public void onMyLocationToggled(View view) { updateMyLocation(); } private void updateMyLocation() { if (!checkReady()) { return; } mMap.setMyLocationEnabled(mMyLocationCheckbox.isChecked()); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { setLayer((String) parent.getItemAtPosition(position)); } private void setLayer(String layerName) { if (!checkReady()) { return; } if (layerName.equals(getString(R.string.normal))) { mMap.setMapType(MAP_TYPE_NORMAL); } else if (layerName.equals(getString(R.string.hybrid))) { mMap.setMapType(MAP_TYPE_HYBRID); } else if (layerName.equals(getString(R.string.satellite))) { mMap.setMapType(MAP_TYPE_SATELLITE); } else if (layerName.equals(getString(R.string.terrain))) { mMap.setMapType(MAP_TYPE_TERRAIN); } else { Log.i("LDA", "Error setting layer with name " + layerName); } } @Override public void onNothingSelected(AdapterView<?> parent) { // Do nothing. } }