Olá, consegui mostrar a minha localização com o ponto. Agora, não está mostrando os outros alunos cadastrados na minha lista.
como faço isso?
segue em anexo os códigos:
public class Localizador implements GoogleApiClient.ConnectionCallbacks, LocationListener {
private final GoogleApiClient client; //a classe GoogleApiClient serve para fazer a conexão dentro do celular
private final MapaFragment mapaFragment;
public Localizador (Context context, MapaFragment mapaFragment){
client = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API) //acessar o LocationsService
.addConnectionCallbacks(this)
.build();
client.connect();
this.mapaFragment = mapaFragment;
}
// metodo em que especificamos o que fazer ao conectar
@Override
public void onConnected(@Nullable Bundle bundle) {
LocationRequest request = new LocationRequest();
request.setSmallestDisplacement(50); //define o deslocamento minimo
request.setInterval(1000); //intervalo de envio da posição
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); //com isso teremos uma precisão muito alta
LocationServices.FusedLocationApi.requestLocationUpdates(client, request, this);
}
//metodo em que especificamos o que fazer quando a conexao for suspensa
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onLocationChanged(Location location) {
LatLng coordenada = new LatLng(location.getLatitude(), location.getLongitude());
mapaFragment.centralizarEm(coordenada);
}
}
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 manager = getSupportFragmentManager();
FragmentTransaction tx = manager.beginTransaction();
mapaFragment = new MapaFragment();
tx.replace(R.id.frame_mapa, mapaFragment); //new SupportMapFragment();
tx.commit();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
String[] permissoes = {android.Manifest.permission.ACCESS_COARSE_LOCATION, android.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);
}
}
}
}
public class MapaFragment extends SupportMapFragment implements OnMapReadyCallback {
private GoogleMap mapa;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
getMapAsync(this);
}
//esse metodo serve para poder mexer no mapa
@Override
public void onMapReady(GoogleMap googleMap) {
this.mapa = googleMap;
LatLng minhaPosicao = new LatLng(-7.91820779, -34.82892931);
//LatLng minhaPosicao = pegaCoordenadaDoEndereco("Rua Honorato Fernandes da Paz, Pau Amarelo, Paulista - PE");
//LatLng minhaPosicao = new LatLng(-7.91820779, -34.82892931);
if(minhaPosicao != null) {
centralizarEm(minhaPosicao);
MarkerOptions marcador = new MarkerOptions();
marcador.title("Minha Posição");
marcador.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
marcador.position(minhaPosicao);
mapa.addMarker(marcador);
}
//adiciona o local do aluno
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.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
marcador.title(aluno.getNome());
marcador.snippet(String.valueOf(aluno.getNota()));
mapa.addMarker(marcador);
}
}
alunoDAO.close();
new Localizador(getContext(), MapaFragment.this);
}
private LatLng pegaCoordenadaDoEndereco(String endereco){
// esse try catch serve para verificar a conexao
try {
Geocoder geocoder = new Geocoder(getContext()); //transforma uma string em latitude e longitude
List<Address> resultados = geocoder.getFromLocationName(endereco, 1); //https://developer.android.com/reference/android/location/Geocoder.html
if (!resultados.isEmpty()){
LatLng posicao = new LatLng(resultados.get(0).getLatitude(), resultados.get(0).getLongitude());
return posicao;
}
}catch (IOException e){
e.printStackTrace();
}
return null; //caso nao tenha nenhum retorno
}
public void centralizarEm(LatLng coordenada) {
if(mapa != null){
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(coordenada, 17);
mapa.moveCamera(update);
}
}
}