Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package br.com.bruno.firebasegooglemaps;
- import android.content.Context;
- import android.content.pm.PackageManager;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.support.v4.app.ActivityCompat;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.Manifest;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.widget.Toast;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.SupportMapFragment;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.google.firebase.database.DataSnapshot;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.database.ValueEventListener;
- import br.com.bruno.firebasegooglemaps.model.Local;
- public class MainActivity extends AppCompatActivity implements OnMapReadyCallback,LocationListener,ActivityCompat.OnRequestPermissionsResultCallback,LocalDialog.OnAddMarker {
- private LocationManager lm;
- private Location location;
- private double longitude = -25.429675;
- private double latitude = -49.271870;
- private FirebaseDatabase database;
- private static final int REQUEST_PERMISSION = 1;
- private GoogleMap map;
- private static String[] PERMISSIONS = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- database = FirebaseDatabase.getInstance();
- SupportMapFragment mapFragment =
- (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
- mapFragment.getMapAsync(this);
- initMaps();
- }
- public void initMaps(){
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
- != PackageManager.PERMISSION_GRANTED
- || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED) {
- requestPermissions();
- } else {
- lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
- location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 60000, this);
- }
- }
- @Override
- public void onMapReady(GoogleMap map) {
- this.map = map;
- if (lm != null) {
- if (location != null) {
- latitude = location.getLatitude();
- longitude = location.getLongitude();
- }
- }
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
- == PackageManager.PERMISSION_GRANTED
- || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
- == PackageManager.PERMISSION_GRANTED) {
- map.setMyLocationEnabled(true);
- }
- map.setTrafficEnabled(true);
- map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 11));
- loadMarker();
- }
- public void addPin(){
- LocalDialog localDialog = LocalDialog.getInstance(this);
- localDialog.show(getSupportFragmentManager(), "localDialog");
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.addMenu:
- addPin();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- @Override
- public void onLocationChanged(Location arg0) {
- }
- @Override
- public void onProviderDisabled(String arg0) {
- }
- @Override
- public void onProviderEnabled(String arg0) {
- }
- @Override
- public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
- switch (requestCode) {
- case REQUEST_PERMISSION: {
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- Toast.makeText(this,"Autorizado",Toast.LENGTH_SHORT).show();
- initMaps();
- } else {
- Toast.makeText(this,"Permissão negada",Toast.LENGTH_SHORT).show();
- }
- return;
- }
- }
- }
- private void requestPermissions() {
- if (ActivityCompat.shouldShowRequestPermissionRationale(this,
- Manifest.permission.ACCESS_COARSE_LOCATION)
- || ActivityCompat.shouldShowRequestPermissionRationale(this,
- Manifest.permission.ACCESS_FINE_LOCATION)) {
- Toast.makeText(this,"Permissão negada",Toast.LENGTH_SHORT).show();
- } else {
- ActivityCompat.requestPermissions(this,PERMISSIONS , REQUEST_PERMISSION);
- }
- }
- public void loadMarker(){
- DatabaseReference locais = database.getReference("locais");
- locais.addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- Iterable<DataSnapshot> dataSnapshots = dataSnapshot.getChildren();
- map.clear();
- for (DataSnapshot dataSnapshot1 : dataSnapshots) {
- Local local = dataSnapshot1.getValue(Local.class);
- map.addMarker(new MarkerOptions().position(new LatLng(local.getLatitude(), local.getLongitude())).title(local.getNome()));
- }
- }
- @Override
- public void onCancelled(DatabaseError error) {
- }
- });
- }
- @Override
- public void onAddMarker() {
- loadMarker();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement