Advertisement
WallaceRobertoc

Untitled

Feb 7th, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.53 KB | None | 0 0
  1. package br.com.bruno.firebasegooglemaps;
  2.  
  3. import android.content.Context;
  4. import android.content.pm.PackageManager;
  5. import android.location.Location;
  6. import android.location.LocationListener;
  7. import android.location.LocationManager;
  8. import android.support.v4.app.ActivityCompat;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.Manifest;
  13. import android.view.Menu;
  14. import android.view.MenuItem;
  15. import android.widget.Toast;
  16.  
  17. import com.google.android.gms.maps.CameraUpdateFactory;
  18. import com.google.android.gms.maps.GoogleMap;
  19. import com.google.android.gms.maps.OnMapReadyCallback;
  20. import com.google.android.gms.maps.SupportMapFragment;
  21. import com.google.android.gms.maps.model.LatLng;
  22. import com.google.android.gms.maps.model.MarkerOptions;
  23. import com.google.firebase.database.DataSnapshot;
  24. import com.google.firebase.database.DatabaseError;
  25. import com.google.firebase.database.DatabaseReference;
  26. import com.google.firebase.database.FirebaseDatabase;
  27. import com.google.firebase.database.ValueEventListener;
  28.  
  29. import br.com.bruno.firebasegooglemaps.model.Local;
  30.  
  31. public class MainActivity extends AppCompatActivity implements OnMapReadyCallback,LocationListener,ActivityCompat.OnRequestPermissionsResultCallback,LocalDialog.OnAddMarker {
  32.  
  33. private LocationManager lm;
  34. private Location location;
  35. private double longitude = -25.429675;
  36. private double latitude = -49.271870;
  37.  
  38. private FirebaseDatabase database;
  39.  
  40. private static final int REQUEST_PERMISSION = 1;
  41.  
  42. private GoogleMap map;
  43.  
  44.  
  45. private static String[] PERMISSIONS = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
  46.  
  47. @Override
  48. protected void onCreate(Bundle savedInstanceState) {
  49. super.onCreate(savedInstanceState);
  50. setContentView(R.layout.activity_main);
  51.  
  52. database = FirebaseDatabase.getInstance();
  53.  
  54. SupportMapFragment mapFragment =
  55. (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  56. mapFragment.getMapAsync(this);
  57.  
  58. initMaps();
  59.  
  60.  
  61.  
  62. }
  63.  
  64. public void initMaps(){
  65. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
  66. != PackageManager.PERMISSION_GRANTED
  67. || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
  68. != PackageManager.PERMISSION_GRANTED) {
  69.  
  70. requestPermissions();
  71.  
  72. } else {
  73. lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  74. location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  75. lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 60000, this);
  76. }
  77. }
  78.  
  79.  
  80. @Override
  81. public void onMapReady(GoogleMap map) {
  82. this.map = map;
  83. if (lm != null) {
  84. if (location != null) {
  85. latitude = location.getLatitude();
  86. longitude = location.getLongitude();
  87.  
  88. }
  89. }
  90. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
  91. == PackageManager.PERMISSION_GRANTED
  92. || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
  93. == PackageManager.PERMISSION_GRANTED) {
  94. map.setMyLocationEnabled(true);
  95. }
  96. map.setTrafficEnabled(true);
  97.  
  98. map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 11));
  99.  
  100. loadMarker();
  101. }
  102. public void addPin(){
  103. LocalDialog localDialog = LocalDialog.getInstance(this);
  104. localDialog.show(getSupportFragmentManager(), "localDialog");
  105. }
  106.  
  107. @Override
  108. public boolean onCreateOptionsMenu(Menu menu) {
  109. getMenuInflater().inflate(R.menu.menu, menu);
  110. return true;
  111. }
  112.  
  113. @Override
  114. public boolean onOptionsItemSelected(MenuItem item) {
  115. switch (item.getItemId()) {
  116. case R.id.addMenu:
  117. addPin();
  118. return true;
  119. default:
  120. return super.onOptionsItemSelected(item);
  121. }
  122. }
  123.  
  124.  
  125.  
  126.  
  127. @Override
  128. public void onLocationChanged(Location arg0) {
  129.  
  130. }
  131.  
  132. @Override
  133. public void onProviderDisabled(String arg0) {
  134.  
  135. }
  136.  
  137. @Override
  138. public void onProviderEnabled(String arg0) {
  139.  
  140. }
  141.  
  142. @Override
  143. public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
  144.  
  145. }
  146.  
  147. @Override
  148. public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
  149. switch (requestCode) {
  150. case REQUEST_PERMISSION: {
  151. if (grantResults.length > 0
  152. && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  153. Toast.makeText(this,"Autorizado",Toast.LENGTH_SHORT).show();
  154. initMaps();
  155.  
  156. } else {
  157. Toast.makeText(this,"Permissão negada",Toast.LENGTH_SHORT).show();
  158. }
  159. return;
  160. }
  161.  
  162. }
  163. }
  164.  
  165. private void requestPermissions() {
  166. if (ActivityCompat.shouldShowRequestPermissionRationale(this,
  167. Manifest.permission.ACCESS_COARSE_LOCATION)
  168. || ActivityCompat.shouldShowRequestPermissionRationale(this,
  169. Manifest.permission.ACCESS_FINE_LOCATION)) {
  170.  
  171.  
  172. Toast.makeText(this,"Permissão negada",Toast.LENGTH_SHORT).show();
  173. } else {
  174. ActivityCompat.requestPermissions(this,PERMISSIONS , REQUEST_PERMISSION);
  175. }
  176. }
  177.  
  178. public void loadMarker(){
  179. DatabaseReference locais = database.getReference("locais");
  180.  
  181. locais.addValueEventListener(new ValueEventListener() {
  182. @Override
  183. public void onDataChange(DataSnapshot dataSnapshot) {
  184. Iterable<DataSnapshot> dataSnapshots = dataSnapshot.getChildren();
  185. map.clear();
  186. for (DataSnapshot dataSnapshot1 : dataSnapshots) {
  187. Local local = dataSnapshot1.getValue(Local.class);
  188. map.addMarker(new MarkerOptions().position(new LatLng(local.getLatitude(), local.getLongitude())).title(local.getNome()));
  189. }
  190. }
  191.  
  192. @Override
  193. public void onCancelled(DatabaseError error) {
  194. }
  195. });
  196. }
  197.  
  198. @Override
  199. public void onAddMarker() {
  200. loadMarker();
  201. }
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement