Android Google Maps v2 not showing Compass and Location Icon
I am not able to show the compass icon and the my location icon either. I have the code googleMap.getUiSettings.setMyLocationButtonEnabled(true) and googleMap.getUiSettings().setCompassEnabled(true); but it is not showing on the maps.
package com.ctc.weathermap; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.provider.Settings; import android.widget.Toast; public class WeatherMapActivity extends Activity implements LocationListener { private GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weather_maps_main); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE); boolean enabledGPS = service.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean enabledWiFi = service.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!enabledGPS) { Toast.makeText(this, "GPS signal not found", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } else if(!enabledWiFi) { Toast.makeText(this, "Network signal not found", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } initializeMap(); googleMap.getUiSettings().setMyLocationButtonEnabled(true); googleMap.getUiSettings().setCompassEnabled(true); } private void initializeMap() { // check if map is created if(googleMap == null) { googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); // creates the map // check if map is created successfully or not if (googleMap == null) { Toast.makeText(getApplicationContext(), "Map could not be created", Toast.LENGTH_SHORT) .show(); } } } @Override protected void onResume() { super.onResume(); initializeMap(); } @Override public void onLocationChanged(Location location) { googleMap.clear(); MarkerOptions marker = new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude())); marker.title("Current location"); marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); googleMap.addMarker(marker); googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 16)); } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub }
}
The rest of the code works such as markers and what not. I have tried putting the code for location and compass in initializeMap() but it still does not show up. I would appreciate any help. Thank you!
Answers
You havent enabled the my-location layer.Check this link for more details
So please do
googleMap.setMyLocationEnabled(true);
before
googleMap.getUiSettings().setMyLocationButtonEnabled(true); googleMap.getUiSettings().setCompassEnabled(true);
This will make your setMyLocationButton come up..
And,the compass icon will appear only if you rotate the map to not align to north.