Olá! Tentei fazer o exercício , mas agora estou recebendo diversos erros. Aqui estão minhas classes: MapaFragment.java: O erro está no new Localizador, pois estou passando um GoogleMap e deveria passar um MapaFragment
public class MapaFragment extends MapFragment implements OnMapReadyCallback {
private GoogleMap mapa;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
this.mapa = mapa;
LatLng posicaoDaEscola = pegaCoordenadaDoEndereco("Rua Vergueiro 3185, Vila Mariana, São Paulo");
if (posicaoDaEscola != null) {
centralizaEm(posicaoDaEscola);
}
AlunoDAO alunoDAO = new AlunoDAO(getContext());
for (Aluno aluno: alunoDAO.buscaAlunos()) {
LatLng coordenada = pegaCoordenadaDoEndereco(aluno.getEndereco());
if (coordenada != null) {
MarkerOptions marcador = new MarkerOptions();
marcador.position(coordenada);
marcador.title(aluno.getNome());
marcador.snippet(String.valueOf(aluno.getNota()));
googleMap.addMarker(marcador);
}
}
alunoDAO.close();
new Localizador(getContext(), googleMap);
}
public void centralizaEm(LatLng coordenada) {
if (mapa != null) {
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(coordenada, 17);
mapa.moveCamera(update);
}
}
private LatLng pegaCoordenadaDoEndereco(String endereco) {
try {
Geocoder geocoder = new Geocoder(getContext());
List<Address> resultados = geocoder.getFromLocationName(endereco, 1);
if (!resultados.isEmpty()) {
return new LatLng(resultados.get(0).getLatitude(),resultados.get(0).getLongitude());
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
Localizador.java: Como citado na própria aula, o problema é não pedir a permissão para o usuário
MapaActivity.java: O Android Studio reclama que não consegue resolver os símbolos "ACCESS_COARSE_LOCATION" e "ACCESS_FINE_LOCATION"
public class MapaActivity extends AppCompatActivity {
private static final int REQUEST_PERMISSOES = 1;
private MapaFragment mapaFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mapa);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction tx = fragmentManager.beginTransaction();
mapaFragment = new MapaFragment();
tx.replace(R.id.frame_mapa, mapaFragment);
tx.commit();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
String[] permissoes = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
requestPermissions(permissoes, REQUEST_PERMISSOES);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_PERMISSOES) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED &&
grantResults[1] == PackageManager.PERMISSION_GRANTED) {
new Localizador(this, mapaFragment);
O que faço? Obrigado!