карта.setmylocationenabled (true) не работает
Я работаю с Google Maps в своем приложении для android. Мне нужно восстановить карту текущего местоположения клиента. Я использовал следующее утверждение -
map.setmylocationenabled(true);
это отображает кнопку в правом верхнем углу, но нажатие на нее не работает.
кнопка нажмите прослушиватель:
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
mMap.addMarker(new MarkerOptions().position(myLatLng).title("My Location"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLatLng, zoomLevel));
return false;
}
});
4 ответов
просто возьмите код из мой другой ответ здесь, и изменить кнопку нажмите прослушиватель, чтобы запросить другое место:
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
return false;
}
});
код в onLocationChanged () затем повторно центрирует положение камеры, а затем снова отменяет регистрацию обновлений местоположения:
@Override
public void onLocationChanged(Location location)
{
mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}
//Place current location marker
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Current Position");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
//move map camera
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11));
if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
}
последняя строка была для меня решением:
myMap.setMyLocationEnabled(true);
myMap.getUiSettings().setMyLocationButtonEnabled(true);
вы пытались получить широту и долготу после использования
setmylocationenabled(true)
?
пример
gMap.setMyLocationEnabled(true);
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
теперь вы можете использовать широту и долготу и анимировать камеру в полученное вами местоположение lat/lng.Надеюсь, это поможет.
вы должны добавить setMyLocationEnabled (boolean enabled)
.
включает или отключает слой my-location.
пока включено и доступно местоположение, слой my-location непрерывно рисует индикацию текущего местоположения пользователя и подшипник и отображает элементы управления UI, позволяющие пользователю взаимодействовать с их расположение (например, чтобы включить или отключить отслеживание камеры их местоположение и пеленг).
в порядке чтобы использовать функцию my-location-layer, вам нужно запросить разрешение для ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION если у вас установлен пользовательский источник.
демо
вы должны добавить это onMapReady (GoogleMap googleMap)
.
@Override
public void onMapReady(GoogleMap googleMap) {
googleMapOBJ = googleMap;
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
googleMapOBJ.setMyLocationEnabled(true);
googleMapOBJ.getUiSettings().setMyLocationButtonEnabled(true);