studio - Cómo mostrar mi ubicación en Google Maps para Android API v2
obtener ubicacion android studio 2017 (5)
Código Java:
public class MapActivity extends FragmentActivity implements LocationListener {
GoogleMap googleMap;
LatLng myPosition;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
// Getting reference to the SupportMapFragment of activity_main.xml
SupportMapFragment fm = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
// Getting GoogleMap object from the fragment
googleMap = fm.getMap();
// Enabling MyLocation Layer of Google Map
googleMap.setMyLocationEnabled(true);
// Getting LocationManager object from System Service LOCATION_SERVICE
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Creating a criteria object to retrieve provider
Criteria criteria = new Criteria();
// Getting the name of the best provider
String provider = locationManager.getBestProvider(criteria, true);
// Getting Current Location
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
// Getting latitude of the current location
double latitude = location.getLatitude();
// Getting longitude of the current location
double longitude = location.getLongitude();
// Creating a LatLng object for the current location
LatLng latLng = new LatLng(latitude, longitude);
myPosition = new LatLng(latitude, longitude);
googleMap.addMarker(new MarkerOptions().position(myPosition).title("Start"));
}
}
}
activity_map.xml:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
Obtendrás tu ubicación actual en un círculo azul.
Miré alto y bajo para obtener una respuesta al respecto, y nadie, en ninguna pregunta del foro, ha podido ayudarme. He buscado a través de los tutoriales. La guía API dice:
El botón Mi ubicación aparece en la esquina superior derecha de la pantalla solo cuando la capa Mi ubicación está habilitada.
Así que he estado buscando esta capa Mi ubicación y no he podido encontrar nada. ¿Cómo muestro mi ubicación en un mapa de Google?
Desde Android 6.0, debe verificar el permiso del usuario. Si desea utilizar GoogleMap.setMyLocationEnabled(true)
, obtendrá la Call requires permission which may be rejected by user
error del Call requires permission which may be rejected by user
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
// Show rationale and request permission.
}
si quieres leer más, ver google map docs
La Guía de API lo tiene todo mal (¿realmente Google?). Con Maps v2 no necesita habilitar una capa para mostrarse, hay una simple llamada a la instancia de GoogleMaps que creó con su mapa.
La documentación real que proporciona Google le da su respuesta. Llamada
// map is a GoogleMap object
map.setMyLocationEnabled(true);
y observa cómo sucede la magia.
Llame a GoogleMap.setMyLocationEnabled(true)
en su Activity
y agregue este código de 2 líneas en el Manifest
:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Para mostrar el botón "Mi ubicación" debe llamar
map.getUiSettings().setMyLocationButtonEnabled(true);
en su objeto GoogleMap.