Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 707
user2127726 Avatar asked Jun 13 '14 16:06

user2127726


People also ask

Why is the compass not showing on Google Maps?

Google removed the compass in Google Maps for Android back in 2019 in its "effort to clean up the Navigation screen." After two years of continuous user feedback, though, Google is now adding the compass back to Maps.

How do I get the compass symbol on Google Maps?

In the Google Maps app, you should see a small compass symbol visible in the top-right corner, below the button for changing the map terrain and style. If the compass isn't currently visible, use two of your fingers to move the map view around to display it.

How do I get a compass on Google Maps Android?

Look for the tiny map icon labeled "Maps" on the home screen or in the app drawer. Tap the location button. It's near the bottom-right corner of the map and looks like a solid black circle inside a larger circle with crosshairs. Tap the compass button.

How do I show latitude and longitude on Google Maps Android?

To find a location using its latitude and longitude on any device, just open Google Maps. On your phone or tablet, start the Google Maps app. On a computer, go to Google Maps in a browser. Then enter the latitude and longitude values in the search field — the same one you would ordinarily use to enter an address.


1 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.

like image 132
Lal Avatar answered Nov 08 '22 14:11

Lal