Я всегда получаю сообщение об ошибке при использовании этого map.setMyLocationEnabled (true); это не работает - PullRequest
0 голосов
/ 15 января 2020

вот мой код внутри фрагмента

@Override
public void onMapReady(GoogleMap map) {

    map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    map.setTrafficEnabled(false);
    map.setIndoorEnabled(false);
    map.setBuildingsEnabled(false);
    map.getUiSettings().setZoomControlsEnabled(true);

         map.setMyLocationEnabled(true);
    map.getUiSettings().setMyLocationButtonEnabled(true);
    LatLng wotw = new LatLng(26.912434, 75.787270);
    map.addMarker(new MarkerOptions().position(wotw)
            .title("Walk of the Week"));
    map.moveCamera(CameraUpdateFactory.newLatLng(wotw));
    map.animateCamera(CameraUpdateFactory.zoomTo(15.0f));


}

Я перепробовал все разрешения и добавил в manifest также я получаю сообщение об ошибке

my location requires permission ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION

Пожалуйста, устраните это Заранее спасибо, и я буду признателен за каждое предложение

1 Ответ

1 голос
/ 15 января 2020

Прежде чем установить map.setMyLocationEnabled(true);, вы должны объявить и проверить разрешения для местоположения:

Сначала вам нужно объявить разрешения для местоположения в AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

После этого вам нужно проверьте предоставленные разрешения перед установкой map.setMyLocationEnabled(true);:

String MY_LOCATION_REQUEST_CODE= "LOCATION_PERMISSIONS";


@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (ContextCompat.checkSelfPermission(this, 
        Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
           mMap.setMyLocationEnabled(true);
           } else {
                    ActivityCompat.requestPermissions(
                      new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
                           MY_LOCATION_REQUEST_CODE);
                   }
     }

На следующем шаге вам нужно проверить предоставленные разрешения:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == MY_LOCATION_REQUEST_CODE) {
      if (permissions.length == 1 &&
          permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION &&
          grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        mMap.setMyLocationEnabled(true);
    } else {
      // Permission was denied. Display an error message.
    }
}

Более подробную информацию вы можете найти в Официальная документация

...